當一堆Maven項目互相依賴須要聯調時,每每會被如下問題所困擾:java
一、被依賴的項目修改,咋debug時沒效果?web
二、被依賴項目,哪怕直接依賴在工程中,有時候代碼也提示找不到源碼。apache
因此我採起了嵌入Jetty容器+Maven命令配合的方式執行。api
解決方案:bash
一、創建聲明Modules的pom.xmlapp
<?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/maven-v4_0_0.xsd "> <modelVersion>4.0.0</modelVersion> <groupId>com.xxx</groupId> <artifactId>xxx</artifactId> <packaging>pom</packaging> <version>1.0-SNAPSHOT</version> <name>xxx</name> <modules> <module>../x1</module> <module>../x2</module> </modules> </project>
並在此執行一次eclipse
mvn eclipse:eclipse
二、項目pom.xml中加入jetty和servlet相關依賴webapp
<!-- jetty相關 --> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-webapp</artifactId> <version>9.2.19.v20160908</version> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-jsp</artifactId> <version>9.2.19.v20160908</version> </dependency> <!-- end -->
三、加入Jetty容器啓動main方法jsp
package com.tuling.api; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.webapp.WebAppContext; public class WebServer { public static void main(String[] args) throws Exception { String projectPath = System.getProperty("user.dir"); String[] fileName = projectPath.split("\\\\"); // 工程名稱 String projectName = fileName[fileName.length - 1]; // 如項目在trunk下,能夠重寫項目名稱,不然會識別爲trunk projectName = "api"; // web資源路徑 String WebRoot = "src/main/webapp"; // 端口號 int port = 8080; Server server = new Server(port); WebAppContext webapp = new WebAppContext(); webapp.setDefaultsDescriptor("src/main/resources/webdefault.xml"); webapp.setDescriptor("src/main/webapp/WEB-INF/web.xml"); webapp.setContextPath("/" + projectName); webapp.setWar(WebRoot); server.setHandler(webapp); server.start(); server.join(); } }
四、Eclipse中的設置maven
a)把項目引入(廢話……)
b)建立編譯啓動項
compile test-compile
這一步主要目的是導入profile中的變量。
c)啓動剛纔編寫的main方法