Java 在多模块项目中运行jetty server
我已经为这个问题挣扎了5个小时——我有一个多模块项目,在其中一个模块(RestManagement)中,我想做RESTAPI。不幸的是,每当我尝试运行它时,我得到的只是一堆错误 在RestManagement模块中,我有文件HelloResourceJava 在多模块项目中运行jetty server,java,maven,jersey,jetty,Java,Maven,Jersey,Jetty,我已经为这个问题挣扎了5个小时——我有一个多模块项目,在其中一个模块(RestManagement)中,我想做RESTAPI。不幸的是,每当我尝试运行它时,我得到的只是一堆错误 在RestManagement模块中,我有文件HelloResource import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; @Path("/hello")
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
@Path("/hello")
public class HelloResource {
@GET @Path("/{name}") @Produces("text/plain")
public String getMsg(@PathParam("name") String name) {
return "hello: " + name;
}
}
我的申请
public class MyApplication extends ResourceConfig {
public MyApplication() {
register(HelloResource.class);
}
}
我的模块POM是
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>oceniarka</artifactId>
<groupId>oceniarka</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>RestManagement</artifactId>
<repositories>
<repository>
<id>central</id>
<name>Maven Repository Switchboard</name>
<layout>default</layout>
<url>http://repo1.maven.org/maven2</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.16</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.16</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
<version>1.19</version>
</dependency>
<dependency>
<groupId>oceniarka</groupId>
<artifactId>DataManagament</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<finalName>RestManagement</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.2.3.v20140905</version>
</plugin>
</plugins>
</build>
</project>
即使我的模块POM中有它。我还尝试使用mvn-am-pl RestManagement jetty只运行这个模块:run我得到了相同的错误。
我试着把这个插件放到主POM上,但后来又出现了另一个错误。除了我在这里描述的场景之外,我也尝试了50种不同的方法来让它工作,但没有一种方法能起到作用,现在我非常生气和绝望
希望有人能帮忙!
提前谢谢事实上我已经找到了答案,所以我会把答案贴出来给任何可能寻找答案的人。 首先,jetty的构建插件应该在REST模块POM中,其次应该执行命令mvn clean、mvn install和mvn dependency:脱机,这样你的maven就可以将所有其他模块下载到本地repo(我不确定你是否需要这三个命令,但我想执行所有命令并没有什么坏处)。然后,您应该从模块目录中的控制台(mvnjetty:runinmycase)运行所需的maven命令。 我真的不确定当我这样做的时候有什么不起作用
mvn -am -pl RestManagement jetty:run
但这对我来说很有效。如果您在settings.xml中有类似的问题,我希望它能为您解决
mvn -am -pl RestManagement jetty:run