是否可以只使用 eclipse 和 share 构建一次 java 项目?
Posted
技术标签:
【中文标题】是否可以只使用 eclipse 和 share 构建一次 java 项目?【英文标题】:Is it possible to build a java project only once using eclipse and share? 【发布时间】:2016-05-15 00:22:41 【问题描述】:是否可以实际构建一个包含要构建一次的 java 代码并且可以共享二进制文件的 maven 项目?
问题:我正在尝试构建的项目大约需要 3-4 小时,并且需要很高的互联网带宽。我正在尝试检查在其他几台机器中重新使用这个构建项目的可能性。
我之前处理过涉及 makefile 的 c++ 项目,这非常简单。我是 Java / eclipse 的新手,需要帮助来确定这是否真的可行。
PS: 我确实试图找到现有的解决方案;他们不是直截了当,或者他们说这是不可能的。
【问题讨论】:
【参考方案1】:构建一次并离线共享
在 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
在日食中,
运行这个,你可以得到两个 JAR 文件。其中一个
MyFullPack-0.0.1-SNAPSHOT-jar-with-dependencies.jar
拥有完整的 已加载依赖项。
可以打开JAR查看依赖包如下图。
您可以离线将此 JAR 共享给其他机器,而无需进行任何构建
【讨论】:
@Siva 这个解决方案只在 maven 中构建一次,你可以与其他机器离线共享【参考方案2】:是否可以实际构建一个包含要构建一次的 java 代码并且可以共享二进制文件的 maven 项目?
是的,这就是 Maven 的全部意义所在,您构建项目一次,从而生成一个工件(您的 jar/war ...),该工件存储在您的本地 maven 存储库中。
以下命令构建项目并将其保存在本地 repo 中:
mvn clean install
但是,如果您这样做,您的本地存储库中只有该工件。
一个好的做法是创建一个存储库并将您的工件存储在那里: https://maven.apache.org/repository-management.html
使用以下命令会将快照依赖项存储在存储库中:
mvn clean deploy
然后,您可以通过在新项目的 pom.xml 文件中指定 dependencies
来通过多台计算机重复使用您的组件。
你可能想看看这个指南:
http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
您显然需要配置存储库和您的 maven 项目才能使用这种设置。
【讨论】:
我还想提议将 maven 与 Jenkins 集成。 Jenkins 本身不支持构建。但是,它可以通过调用项目中的 pom.xml 文件来触发构建、运行 JUNIT 等。 Jenkins 让您有权决定何时调用 pom.xml 文件、如何调用以及您想对结果执行什么操作。 Jenkins 可以监听不同的事件,例如 svn commit 这是一个强大的想法。例如,您可以要求 Jenkins 在提交新代码时触发构建或运行所有 JUnit 测试,然后,如果单元测试通过,则在目标机器上部署。 我要补充一点,如果你只是想获得你不应该运行 mvn install 的工件,mvn package 会为你编译工件并将它放在你项目的目标文件夹中。【参考方案3】:首先要做的事情。您的项目是 Web 应用程序(war)还是企业应用程序(ear)或只是一个独立的 Jar?
您可以使用 POM.xml 中的打包标签将您的应用程序打包为 JAR、WAR、EAR
例子:
<packaging>war</packaging>
<packaging>ear</packaging>
<packaging>jar</packaging>
然后运行 mvn clean install
在 project/src/target 中,您应该会看到生成的 jar、war 或 ear,您可以使用它们部署在您的机器或任何其他机器上。
或
运行安装后,您也可以在 .m2 文件夹中找到它。
【讨论】:
【参考方案4】:如果您使用 maven,mvn install
会将您的二进制文件安装到您的 $home/.m2 文件夹中。这些二进制文件将可用于将在同一台机器上运行的所有其他 maven 作业。
如果您需要在多台机器之间共享您的二进制文件,您可以将您的 jars 部署到存储库,例如 nexus 或 artifactory。
【讨论】:
【参考方案5】:您可以只获取目标文件夹的 jar 文件并将其复制到其他机器,否则您可以使用诸如 nexus oder artifactory 之类的共享存储库来共享您构建的二进制文件。 Maven 能够自动将工件部署到这些存储库中
【讨论】:
以上是关于是否可以只使用 eclipse 和 share 构建一次 java 项目?的主要内容,如果未能解决你的问题,请参考以下文章
Eclipse启动时提示Failed to load the JNI shared library jvm.dll
Eclipse打不开。The Eclipse executable launcher was unable to locate its companion shared library
使用 Eclipse 通过 SSH 在远程服务器上构建和调试项目