Maven Modules在Eclipse中的調試解決方案

當一堆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方法

相關文章
相關標籤/搜索