有没有可能构建一个包含Java代码的Maven项目,只需构建一次,就可以共享二进制文件?
问题: 我正在尝试构建的项目需要大约3-4小时的时间,并且需要高速互联网带宽。我正在尝试检查在其他几台机器中重复使用此构建项目的可能性。
我之前曾经用过包含Makefile的C ++项目,这很简单。我是Java / Eclipse的新手,需要帮助确定是否真的可以做到这一点。
附注: 我确实尝试找到现有的解决方案; 它们不直观,或者它们说这是不可能完成的。
在Maven中,您可以仅构建一次项目,并获得一个已完全打包所有依赖项的JAR文件。这样,您可以将此JAR文件离线共享到其他计算机上。
以下是制作它的步骤。
- 首先使用下面的设置更新您的pom.xml文件
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.thanga.MyTest[REPLACE WITH YOUR MAIN CLASS]</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>
- 按如下所示的目标
package assembly:single
打包您的项目。
在控制台中,
mvn package assembly:single
在Eclipse中,
- 运行此操作,您可以获得两个JAR文件。其中一个
MyFullPack-0.0.1-SNAPSHOT-jar-with-dependencies.jar
包含所有依赖项。
- 您可以打开JAR文件查看已打包的依赖项,如下所示。
- 您可以将此JAR文件离线共享到其他计算机上而无需进行任何构建操作。
是否有可能构建一个包含Java代码的Maven项目,只需构建一次即可共享二进制文件?
是的,这就是Maven的全部意义,您只需构建项目一次,就可以生成一个存储在本地Maven存储库中的构件(您的jar / war ...)。
以下命令将构建项目并将其保存在本地存储库中:
mvn clean install
mvn clean deploy
通过在新项目的pom.xml文件中指定dependencies
,您可以在多台计算机上重复使用组件。
您可能想要查看这个指南:
http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
您需要配置存储库和Maven项目才能使用此类设置。
首先,您的项目是Web应用程序(War)还是企业应用程序(Ear),还是仅为独立的Jar?
您可以使用POM.xml中的打包标签将应用程序打包成JAR、WAR或EAR。
示例:
<packaging>war</packaging>
<packaging>ear</packaging>
<packaging>jar</packaging>
接下来运行mvn clean install命令。
在项目的src/target目录下,你会看到生成的jar、war或ear文件,可以用它来在您的机器或任何其他机器上部署。
或者
一旦运行过install命令,您也可以在.m2文件夹中找到它。
mvn install
命令会将二进制文件安装到${home}/.m2目录中。这些二进制文件将可供在同一台机器上运行的所有其他maven作业使用。