在Eclipse中构建Java项目后,能否仅构建一次并共享?

19

有没有可能构建一个包含Java代码的Maven项目,只需构建一次,就可以共享二进制文件?

问题: 我正在尝试构建的项目需要大约3-4小时的时间,并且需要高速互联网带宽。我正在尝试检查在其他几台机器中重复使用此构建项目的可能性。

我之前曾经用过包含Makefile的C ++项目,这很简单。我是Java / Eclipse的新手,需要帮助确定是否真的可以做到这一点。

附注: 我确实尝试找到现有的解决方案; 它们不直观,或者它们说这是不可能完成的。

5个回答

25

只需构建一次,即可离线分享

在Maven中,您可以仅构建一次项目,并获得一个已完全打包所有依赖项的JAR文件。这样,您可以将此JAR文件离线共享到其他计算机上。

以下是制作它的步骤。

  1. 首先使用下面的设置更新您的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>
  1. 按如下所示的目标package assembly:single打包您的项目。

在控制台中,

 mvn package assembly:single

在Eclipse中,

enter image description here


  1. 运行此操作,您可以获得两个JAR文件。其中一个MyFullPack-0.0.1-SNAPSHOT-jar-with-dependencies.jar包含所有依赖项。

enter image description here


  1. 您可以打开JAR文件查看已打包的依赖项,如下所示。

enter image description here


  1. 您可以将此JAR文件离线共享到其他计算机上而无需进行任何构建操作。


@Siva 这个解决方案是在 Maven 中只构建一次,然后可以将其离线共享给其他机器。 - Thanga

8

是否有可能构建一个包含Java代码的Maven项目,只需构建一次即可共享二进制文件?

是的,这就是Maven的全部意义,您只需构建项目一次,就可以生成一个存储在本地Maven存储库中的构件(您的jar / war ...)。

以下命令将构建项目并将其保存在本地存储库中:

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项目才能使用此类设置。


1
我还想提议将Maven与Jenkins集成。Jenkins本身不支持构建。但是,它可以通过调用项目中的pom.xml文件来触发构建、运行JUNIT等。Jenkins让您有权决定何时调用pom.xml文件、如何调用以及您希望对结果进行什么操作。Jenkins可以监听不同的事件,例如svn提交。这是一个强大的想法。例如,您可以要求Jenkins在提交新代码时触发构建或运行所有JUnit测试,然后如果单元测试通过,则部署到目标机器上。 - The Roy
我想补充一点,如果你只是想获取构件,那么不需要运行mvn install,直接运行mvn package即可为你编译构件并将其放置在项目的target文件夹中。 - jvalli

3

首先,您的项目是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文件夹中找到它。


1
如果您使用maven,mvn install命令会将二进制文件安装到${home}/.m2目录中。这些二进制文件将可供在同一台机器上运行的所有其他maven作业使用。
如果您需要在多台机器之间共享二进制文件,可以将JAR包部署到仓库,例如nexus或artifactory。

1
你可以直接拿到目标文件夹的jar文件并将其复制到其他机器上,或者使用像nexus或artifactory这样的共享仓库来共享构建的二进制文件。Maven能够自动将构件部署到这些仓库中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接