Maven项目如何引用另一个Maven项目所有或指定模块及JAR

本文讨论了在一个正在开发的产品级项目上构建新项目时,如何正确地引用产品级项目的方法。通过Maven的依赖配置,详细解释了如何设置groupId、artifactId和version来实现跨项目引用。

转转转自:https://www.oschina.net/question/554168_132598
如题。

问题背景是,有个产品级项目,还在开发中,现在又有另一个项目是建立在前面那个产品级项目基础上开发的。

现在这个新项目如何引用这个产品级项目?

答案:
引用来自“FuYung”的答案
格式:

<dependency>
       <groupId> 产品级项目的groupId</groupId>
       <artifactId> 产品级项目的artifactId</artifactId>
       <version>产品级项目的version</version>
</dependency>

示例:

<dependencies>
	<dependency>
		<groupId>com.tbynet</groupId>
		<artifactId>tbynet</artifactId>
		<version>0.0.1-SNAPSHOT</version>
		<type>pom</type>
		<scope>compile</scope>
	</dependency>
</dependencies>
Maven模块项目中构建一个可执行的JAR文件,通常需要将多个模块的依赖打包成一个包含所有依赖的JAR文件,并指定主类(Main-Class),以便可以直接通过 `java -jar` 命令运行。 ### 配置方式 1. **使用 `maven-jar-plugin` 和 `maven-shade-plugin`** 在父项目的 `pom.xml` 中,可以配置一个模块作为最终打包的模块,并在该模块中使用 `maven-shade-plugin` 来打包所有依赖到一个JAR中。以下是一个典型的插件配置: ```xml <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.5.0</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>com.example.Main</mainClass> <!-- 指定主类 --> </transformer> </transformers> </configuration> </execution> </executions> </plugin> </plugins> </build> ``` 这样配置后,当执行 `mvn package` 命令时,会生成一个包含所有依赖的可执行JAR文件,并在 `MANIFEST.MF` 文件中指定主类。 2. **使用 `spring-boot-maven-plugin`(适用于Spring Boot项目)** 如果项目是Spring Boot项目,可以使用 `spring-boot-maven-plugin` 来简化打包过程。在子模块的 `pom.xml` 中添加以下配置: ```xml <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build> ``` 该插件会自动将所有依赖打包成一个可执行的JAR文件,并自动设置主类为Spring Boot应用的主类。 3. **构建命令** 在父项目的根目录下执行以下命令来构建整个项目并生成可执行JAR文件: ```bash mvn clean package ``` 构建完成后,可以在子模块的 `target` 目录下找到生成的可执行JAR文件。 4. **注意事项** - 确保主类路径正确,并且主类中包含 `main` 方法。 - 如果使用 `maven-shade-plugin`,需要注意依赖冲突问题,可以通过 `<excludes>` `<dependencySets>` 来排除不需要的依赖。 - 对于Spring Boot项目,`spring-boot-maven-plugin` 是首选的打包工具,因为它提供了更好的集成和默认配置。 ### 示例代码 假设主类为 `com.example.Main`,其代码可能如下: ```java public class Main { public static void main(String[] args) { System.out.println("Hello, this is the main method."); } } ``` ### 相关问题 1. 如何在Maven模块项目中配置多个主类? 2. 如何在Maven模块项目中排除某些依赖? 3. 如何使用Maven将Spring Boot多模块项目打包成一个WAR文件? 4. 如何在Maven模块项目中使用 `maven-assembly-plugin` 打包?
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值