IDEA使用maven进行多模块项目打包并梳理正确的打包顺序

maven多模块打包一般相互之间都有互相的依赖关系,如果没有按照正确的依赖关系顺序进行打包就会报错。

例如有三个模块web、service、common。其中web依赖service。web和service都依赖common,那么正确的打包顺序就是:

common->service->web。

否则就会报错。

如果用一个父目录包含他们三个模块的话,可以用

maven-assembly-plugin

进行统一打包。统一打包需要在父目录中增加pom文件,并且在pom.xml注明包含关系。如:

	<modelVersion>4.0.0</modelVersion>

	<groupId>cn.com.leonado</groupId>
	<artifactId>test</artifactId>
	<packaging>pom</packaging>
	<version>1.0-SNAPSHOT</version>


	<modules>
		<module>web</module>
		<module>service</module>
        <module>common</module>
	</modules>

这样在maven进行统一打包的时候就会先进行父模块的打包后进行子模块的打包。子模块之间的打包顺序是根据pom.xml文件中的引用依赖顺序来决定的。以下为我的依赖顺序

web模块pom.xml引用
		<dependency>
			<groupId>cn.com.leonado</groupId>
			<artifactId>service</artifactId>
			<version>${project.version}</version>
		</dependency>
		<dependency>
			<groupId>cn.com.leonado</groupId>
			<artifactId>common</artifactId>
			<version>${project.version}</version>
		</dependency>

service模块pom.xml引用
		<dependency>
			<groupId>cn.com.leonado</groupId>
			<artifactId>common</artifactId>
			<version>${project.version}</version>
		</dependency>

这样的打包顺序就变成common->service->web的顺序。如果要进行打包成可运行的安装包形式就需要在maven-assembly-plugin插件中引用打包脚本。一般打包脚本卸载最外层的pom.xml中。

			<plugin>
				<artifactId>maven-assembly-plugin</artifactId>
				<configuration>
					<finalName>leonado-test</finalName>
					<descriptors>
						<descriptor>/assembly-win64zip.xml</descriptor>
					</descriptors>
				</configuration>
				<executions>
					<execution>
						<id>distro-assembly</id>
						<phase>package</phase>
						<goals>
							<goal>single</goal>
						</goals>
					</execution>
				</executions>
			</plugin>

打包脚本示例,打包脚本目录位置为web模块的根路径下:

<?xml version="1.0" encoding="utf8"?>
<assembly
	xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
	<!-- 产生zip文件的名字 -->
	<id>LEONADO_TEST_APIDemo(Java版)</id>
	<formats>
		<format>zip</format>
	</formats>

	<!-- 将全部依赖放到/lib目录下 -->
	<dependencySets>
		<dependencySet>
			<outputDirectory>/lib</outputDirectory>
		</dependencySet>
	</dependencySets>
	<!-- 根目录下的默认bin,config,init,web四个目录会被添加到tar中 -->
	<fileSets>
		<!-- jdk 目录 C:\Program Files\Java\jre7-->
		<fileSet>
			<directory>/home/build/pki/jdk/jdk1.8.0_111/jre</directory>
			<!--<directory>C:\Program Files\Java\jdk1.8.0_51\jre</directory>-->
			<outputDirectory>/jre-1.8</outputDirectory>
			<includes>
				<include>**</include>
			</includes>
		</fileSet>

		<!--构建bin目录 -->
		<fileSet>
			<directory>windows</directory>
			<outputDirectory>/bin</outputDirectory>
			<includes>
				<include>*.bat</include>
			</includes>
		</fileSet>
<!--构建log目录 -->
		<fileSet>
			<directory>log</directory>
			<outputDirectory>/log</outputDirectory>
			<includes>
				<include>**</include>
			</includes>
		</fileSet>
		<fileSet>
			<directory>script</directory>
			<outputDirectory>/</outputDirectory>
			<includes>
				<include>**</include>
			</includes>
		</fileSet>

		<!-- 构建跟目录 -->
		<fileSet>
			<directory>${basedir}</directory>
			<outputDirectory>/</outputDirectory>
			<includes>
				<include>config.ini</include>
				<include>logback.xml</include>				
			</includes>
		</fileSet>
	</fileSets>
	<!--打包文件将依赖模块打成的jar放到lib依赖目录中-->
	<files>
		<file>
			<source>../common/target/common-2.0.jar</source>
			<outputDirectory>/lib</outputDirectory>
			<destName>common-2.0.jar</destName>
		</file>
		<file>
			<source>../service/target/service-2.0.jar</source>
			<outputDirectory>/lib</outputDirectory>
			<destName>service-2.0.jar</destName>
		</file>
	</files>
</assembly>

最终打包结果为:

 

所有的依赖包全部打包到lib下,包括web.jar、service.jar、common.jar。

 

以上希望对大家有帮助。

如果转载请标明出处。

要在Idea进行Maven项目打包和部署,可以按照以下步骤进行操作: 1. 首先,确保已经正确配置了Maven环境。可以在Idea的Settings中找到Maven节点,设置Maven的home directory、user settings file和local repository等信息。 2. 创建一个Maven管理的Java Web项目。在Idea中,点击File -> New Project -> 选择Maven。选择Create from archetype,并选择maven-archetype-webapp。填写GroupId、ArtifactId和Version等信息,然后点击Finish完成项目的创建。 3. 打包Java Web项目。在Idea的导航栏中找到Maven Projects,点击打开。可以看到一个简单的工具来对Maven进行打包。点击Run Maven Build,如果出现错误,可以按照以下步骤解决: a. 点击File -> Settings -> 搜索框中输入Maven,定位到Maven节点 -> Runner。在VM Options的文本框中复制这段内容(-Dmaven.multiModuleProjectDirectory=$M2_HOME),然后点击OK。 b. 再次运行,应该不会报错,并且会显示一些打包的内容。 c. 选择install,右键点击Run运行即可。运行完成后,会提示你打包的war包的位置。 4. 将war包部署到Tomcat。找到war包,复制到Tomcat的WebApps文件夹下,然后启动Tomcat。通过访问相应的URL,即可访问部署的Java Web项目。 请注意,以上步骤是在Idea进行Maven项目打包和部署的一般流程。具体操作可能会因个人环境和项目配置而有所不同。 #### 引用[.reference_title] - *1* *2* *3* [Idea开发环境中搭建Maven并且使用Maven打包部署程序](https://blog.csdn.net/weixin_34227447/article/details/85781234)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值