首页 > 其他分享 >创建支持eclipse的多模块maven项目

创建支持eclipse的多模块maven项目

时间:2023-05-16 11:31:49浏览次数:40  
标签:pandy color com eclipse maven 模块 archetype


Maven命令行来创建项目 [url]http://everlook.iteye.com/blog/1446672[/url]



一些命令说明:
直接创建maven web项目
[color=blue]mvn archetype:create -DgroupId=cn.everlook.myweb -DartifactId=myweb -DarchetypeArtifactId=[b]maven-archetype-webapp[/b][/color]
说明:archetypeArtifactId(项目骨架的类型)
[i]* maven-archetype-archetype
* maven-archetype-j2ee-simple
* maven-archetype-mojo
* maven-archetype-portlet
* maven-archetype-profiles (currently under development)
* maven-archetype-quickstart
* maven-archetype-simple (currently under development)
* maven-archetype-site
* maven-archetype-site-simple
* maven-archetype-webapp[/i]
然后进入myweb目录,执行mvn eclipse:eclipse -Dwtpversion=2.0,这就可以用wtp插件发布了。

根据原文,我得到自己的操作:
环境: Maven 3.0.x, OS: Fedora17

[color=red][b]1.创建父工程,并配置[/b][/color]
[color=blue]mvn archetype:create -DgroupId=com.pandy.p -DartifactId=PandyTest -DarchetypeArtifactId=maven-archetype-quickstart
cd PandyTest
rm -rf src[/color]
修改pom.xml里面的packaging为pom;
设定父工程的编译等级:

<build>
      <plugins>
          <plugin>
              <artifactId>maven-compiler-plugin</artifactId>
              <configuration>
                  <source>1.7</source>
                  <target>1.7</target>
                  <encoding>UTF-8</encoding>
              </configuration>
          </plugin>
      </plugins>
  </build>


[color=red][b]2.创建子工程,并做相应配置 [/b][/color]


[color=blue]mvn archetype:create -DgroupId=com.pandy.p -DartifactId=PandyC1 -DarchetypeArtifactId=maven-archetype-quickstart


mvn archetype:create -DgroupId=com.pandy.p -DartifactId=PandyC2 -DarchetypeArtifactId=maven-archetype-webapp[/color]


[b]Web模块设定对C1工程的依赖[/b]:


<dependency>
			<groupId>com.pandy.p</groupId>
			<artifactId>PandyC1</artifactId>
			<version>1.0-SNAPSHOT</version>
		</dependency>



[b]Web模块设定插件[/b],eclipse插件,jetty插件,注意<finalName>PandyC2</finalName>和

<contextPath>/PandyC2</contextPath>节点:
  <build>
      <finalName>PandyC2</finalName>
      <plugins>
          <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-eclipse-plugin</artifactId>
              <configuration>
                  <wtpmanifest>true</wtpmanifest>
                  <wtpapplicationxml>true</wtpapplicationxml>
                  <wtpversion>2.0</wtpversion>
              </configuration>
          </plugin>

            <plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>2.3.2</version>
				<configuration>
					<source>1.6</source>
					<target>1.6</target>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>2.5</version>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-war-plugin</artifactId>
				<version>2.1.1</version>
				<configuration>
					<archive>
						<manifest>
							<!--<addClasspath>true</addClasspath> -->
						</manifest>
						<manifestEntries>
							<Built-By>org-builder</Built-By>
							<Build-Jdk>${java.version}</Build-Jdk>
						</manifestEntries>
					</archive>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.mortbay.jetty</groupId>
				<artifactId>maven-jetty-plugin</artifactId>
				<version>6.1.20</version>
				<configuration>
					<contextPath>/PandyC2</contextPath>
					<!--<webDefaultXml>webdefault.xml</webDefaultXml> -->
					<scanIntervalSeconds>0</scanIntervalSeconds>
					<scanTargetPatterns>
						<scanTargetPattern>
							<directory>src/main/webapp/WEB-INF</directory>
							<excludes>
								<exclude>**/*.jsp</exclude>
							</excludes>
							<includes>
								<include>**/*.properties</include>
								<include>**/*.xml</include>
							</includes>
						</scanTargetPattern>
					</scanTargetPatterns>
				</configuration>
			</plugin>
			<plugin>
				<artifactId>maven-war-plugin</artifactId>
				<version>2.0.2</version>
				<configuration>
					<archive>
						<manifest>
							<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
						</manifest>
						<manifestEntries>
							<Implementation-Build>${buildNumber}</Implementation-Build>
						</manifestEntries>
					</archive>
					<dependentWarExcludes>
						**/jdbc.properties,**/web.xml,WEB-INF/classes/META-INF/**
					</dependentWarExcludes>
				</configuration>
			</plugin>
        </plugins>
  </build>


[color=red][b]3.针对eclipse处理 [/b][/color]


退回到父目录:[color=blue]mvn eclipse:eclipse[/color] , 或者: [color=blue]mvn eclipse:eclipse -Dwtpversion=2.0[/color]


别人的命令:mvn eclipse:eclipse -Dwtpversion=1.0


记得不要缺少 -Dwtpversion=1.0,这个说明了eclipse认出它就是web项目,而不是简单的java项目,大家应该知道web项目在eclipse可以做一些其他的事情吧。



修改Webapp工程的.classpath文件,增加:[color=red]这个很重要[/color]


[color=blue]<classpathentry kind="src" path="src/main/java" including="**/*.java"/>[/color]


否则,导入之后,创建java的代码,总是在eclipse上位置现实不对。



倒入到eclipse, 导入的时候选择Maven已存在项目,选择父工程的根目录。


会看见导入三个工程,其中[color=blue]子工程有错误,点击错误右键,快速修复(Quick Fix)[/color],即可解决问题


如果要在eclipse中使用m2eclipse,需要使用:


mvn eclipse:m2eclipse


[color=red][b]4. 编译过程:[/b][/color]


到父工程右键--运行方式--Maven clean , Maven install。


这个过程


A: 自动会编译子模块C1,并打包成jar,


B: 自动会编译子模块C2,并打包成war, 并把C1生成的jar放到C2.war下面去。


[color=red][b]5. eclipse运行webapp工程:[/b][/color]


因为C2是Webapp的工程,所以必须跑到C2下面执行: [color=blue]jetty:run[/color]


[color=red][b]问题:如何实时调试C1的java代码[/b][/color]?



[color=darkblue][b]关于部署,可以参考[/b][/color]:[url]http://panyongzheng.iteye.com/blog/1866757[/url]




[color=red][b]其他:[/b][/color]


按照上面的带的三个pom.xml大概如下:


父pom.xml


<?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">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.pandy.p</groupId>
	<artifactId>PandyTest</artifactId>
	<version>1.0-SNAPSHOT</version>
	<packaging>pom</packaging>

	<name>PandyTest</name>
	<url>http://maven.apache.org</url>
        ..........
	<modules>
		<module>PandyC1</module>
		<module>PandyC2</module>
	</modules>
</project>



非Webapp的子Module pom.xml


<?xml version="1.0"?>
<project
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>com.pandy.p</groupId>
		<artifactId>PandyTest</artifactId>
		<version>1.0-SNAPSHOT</version>
	</parent>
	<groupId>com.pandy.p</groupId>
	<artifactId>PandyC1</artifactId>
	<version>1.0-SNAPSHOT</version>
	<name>PandyC1</name>
	<url>http://maven.apache.org</url>
	.....
	.....
</project>



Webapp的子Module pom.xml


<?xml version="1.0"?>
<project
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
	xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>com.pandy.p</groupId>
		<artifactId>PandyTest</artifactId>
		<version>1.0-SNAPSHOT</version>
	</parent>
	<groupId>com.pandy.p</groupId>
	<artifactId>PandyC2</artifactId>
	<version>1.0-SNAPSHOT</version>
	<packaging>war</packaging>
	<name>PandyC2 Maven Webapp</name>
	<url>http://maven.apache.org</url>
	<dependencies>
		......
		<dependency>
			<groupId>com.pandy.p</groupId>
			<artifactId>PandyC1</artifactId>
			<version>1.0-SNAPSHOT</version>
		</dependency>
	</dependencies>
	<build>
		<finalName>PandyC2</finalName>
		......
	</build>
</project>


其实,两个子Module的pom.xml可以去掉


<groupId>com.pandy.p</groupId>,<version>1.0-SNAPSHOT</version>


因为他们自己的pom.xml里面的parent节点,已经定义了。


标签:pandy,color,com,eclipse,maven,模块,archetype
From: https://blog.51cto.com/u_3871599/6283000

相关文章

  • 什么叫模块化,为什么要实施模块化?
    模块化就是把程序划分为独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户需求.模块是由边界元素限定的相邻程序元素的序列,而且总有一个总体标识符代表它。模块化可以能够提高软件的可修改性;模块化有助于软件开发工程......
  • 最新Android开发环境(Eclipse+ADT+Android 5.0)
     一、一切由运行时错误引起dalvikvmCouldnotfindclass'引用包.类',referencedfrommethod... 其实在编译时也会见到如下错误:      [dx]       [dx]troubleprocessing:      [dx]badclassfilemagic(cafebabe)orversion(0033.00......
  • python 中 pyfaidx 模块统计fasta文件每一条染色体的长度
     001、python版本和pip版本a、python版本[root@PC1pip]#python--versionPython3.11.3 b、pip版本[[email protected]]#pip--versionpip23.1.2from/usr/local/lib/python3.11/site-packages/pip(python3.11) 002、利用pip安装 pyfaidx模块......
  • pathlib模块--面向对象的文件系统路径标准
    1pathlib中的path类获取当前工作目录Path.cwd()注意P是大写这个和os.getcwd()结果很类似获取一个当前目录下的path对象获取当前系统的home路径根据给定参数的匹配模式,返回所有匹配到的文件注意glob()返回的是一个生成器,是看不到具体内容的,可用sorted()或者list()或......
  • 离线安装python模块
    安装环境32位win7电脑+python3.7.5模块来源(1)https://www.lfd.uci.edu/~gohlke/pythonlibs(2)https://pypi.org/安装numpy-1.21.6——直接安装pandas-1.3.5——所需支持:numpy-1.21.6,cython-0.29.30,six-1.16.0,python-dateutil-2.8.2,pytz2023.3matplotlib-2.2.5——所需支持:n......
  • 5、Nginx 常见模块 auth_basic:实现账户认证功能
    Nginx账户认证功能由ngx_http_auth_basic_module模块提供此功能官方帮助:http://nginx.org/en/docs/http/ngx_http_auth_basic_module.html语法格式:Syntax: auth_basic_user_filefile;Default: —Context: http,server,location,limit_except范例:authbasic提......
  • 使用Eclipse JEE+Mtj+Nokia S60 V3SDK开发J2ME应用的环境搭建
    使用EclipseJEE+Mtj+NokiaS60V3SDK开发J2ME应用的环境搭建2010-04-0716:53   在NokiaS60V3下进行J2ME应用程序开发,需要搭建Nokia官方提供的SDK环境。一般的J2ME应用开发使用Sun公司的J2MESDK就可以了,如果需要开发基于NokiaS60手机应用,就需要Noki......
  • destoon8.0模块内容处理违规词生成语句
    因为站点数据比较庞大,有部分违规词,这是很严重的,所以要批量输入关键词自动生成mysql删除语句,然后复制到mysql命令进行删除,这样比较方便。代码如下,比如要生成21资讯模块下的内容违规词删除语句,只需要在21资讯模块目录下新建一个stopmysql.php<?phprequire'../common.inc.php';......
  • maven引入ojdbc14.jar的方法
    1、ojdbc14.jar的导入方法:①与导入其它jar包相同,在项目pom.xml文件中,可以采用Dependencies向导搜索并导入代码,可以发现其GroupId为com.oracle,ArtifactId为ojdbc14,目前最新版本为:10.2.0.4.0,因此有如下代码:com.oracleojdbc1410.2.0.4.0如果是其它一些常见的包,如Struts、Sprin......
  • IdeaJ 模块添加外部 jar 包
    如下方式针对单个模块化,如corejava的课程代码。更方便的可以通过maven管理1.下载对应的jar包2.将下载的jar包放入lib目录下3.添加 Libraries,File->ProjectStructure->Libraries->"+",添加lib目录下的jar包4.此时,Module下的code就可以正常引......