Resteasy with maven

来自软件实验室
Subaochen讨论 | 贡献2015年12月14日 (一) 11:47的版本 (创建页面,内容为“== 环境说明 == * maven 3.3.9 * wildfly 9.0.2 * resteasy:wildfly自带,版本3.0.11.Final == 使用maven创建项目 == 使用下列命令创建示例项目:...”)

(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

环境说明

  • maven 3.3.9
  • wildfly 9.0.2
  • resteasy:wildfly自带,版本3.0.11.Final

使用maven创建项目

使用下列命令创建示例项目:

mvn archetype:generate  -DgroupId=cn.edu.sdut.r314  -DartifactId=helloRest  -DarchetypeArtifactId=maven-archetype-webapp  -DinteractiveMode=false

也可以交互方式创建项目,步骤如下:

  1. 执行命令 mvn archetype:generate
  2. 在接下来的众多archetype中,输入webapp筛选缩小范围,目前列出了86个符合webapp的archetype,我们这里使用第22个archetype,创建一个简单的webapp的框架:
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 703: webapp
Choose archetype:
1: remote -> br.com.ingenieux:elasticbeanstalk-docker-dropwizard-webapp-archetype (A Maven Archetype for Publishing Dropwizard-based Services on AWS' Elastic Beanstalk Service)
......
21: remote -> org.apache.marmotta:marmotta-archetype-webapp (Web Application bundle (WAR file) containing Apache Marmotta)
22: remote -> org.apache.maven.archetypes:maven-archetype-webapp (An archetype which contains a sample Maven Webapp project.)
......
86: remote -> uk.ac.rdg.resc:edal-ncwms-based-webapp (-)
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): : 22


  1. 在接下来的交互中,输入合适的groupId(包名),artifactId(项目名)即可成功创建项目框架。

项目导入到eclipse

为了方便项目文件的编辑,可以将maven创建的项目导入到eclipse中进行管理。

修改pom.xml

初始的pom.xml文件是这个样子的:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>cn.edu.sdut.r314</groupId>
	<artifactId>helloRest</artifactId>
	<packaging>war</packaging>
	<version>1.0-SNAPSHOT</version>
	<name>helloRest Maven Webapp</name>
	<url>http://maven.apache.org</url>
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>
	</dependencies>
	<build>
		<finalName>helloRest</finalName>
	</build>
</project>

可以看出,maven-archetype-webapp这个archetype创建的项目默认已经添加了junit的依赖。虽然我们这个示例程序暂时没有涉及单元测试的内容,我们还是保留junit的依赖设置,方便以后增加单元测试的内容。本实例当然需要增加resteasy的依赖设置,另外由于我们要把应用部署到wildfly,因此增加了部署wildfly应用的plugin,修改后的pom.xml文件如下所示:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>cn.edu.sdut.r314</groupId>
	<artifactId>helloRest</artifactId>
	<packaging>war</packaging>
	<version>1.0-SNAPSHOT</version>
	<name>helloRest Maven Webapp</name>
	<url>http://maven.apache.org</url>
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.jboss.resteasy</groupId>
			<artifactId>resteasy-jaxrs</artifactId>
			<version>3.0.11.Final</version>
			<scope>provided</scope>
		</dependency>
	</dependencies>
	<build>
		<finalName>helloRest</finalName>
		<plugins>
			<plugin>
				<groupId>org.wildfly.plugins</groupId>
				<artifactId>wildfly-maven-plugin</artifactId>
				<version>1.1.0.Alpha4</version>
			</plugin>
		</plugins>

	</build>
</project>

由于wildfly 9.0.2内置了resteasy 3.0.11.Final,因此我们的示例程序对resteasy的依赖声明为provided scope,即告诉wildfly,我们使用wildfly自带的resteasy实现(参见wildfly的modules/system/layers/base/org/jboss/resteasy目录)。如果去掉scope声明,则使用我们指定的resteasy实现。换言之,如果resteasy的scope为provided,则打包后的应用不包含resteasy-jaxrs.jar;如果resteasy的scope省略,则打包后的应用会包含resteasy-jaxrs.jar。

编写服务器端的service

由于maven-archetype-webapp没有正确的创建java目录和包,需要我们手工创建:在src/main目录下创建java/cn/edu/sdut/r314目录(可以通过在eclipse创建相应的包名的方式创建此目录),我们服务器端的service即安放在这个目录下。同时,在src/创建test/java,将来的单元测试放在这里。

部署

进一步的问题