如何将第 3 方 JAR 添加到我的 Travis-CI maven 构建中?

How can I add a 3rd party JAR to my Travis-CI maven build?

我有一个使用没有 Maven 存储库的 JAR 的项目。 这是我自己做的。

在构建我的项目之前,我在我的控制台上执行此操作:

mvn install:install-file -Dfile=myownjar-1.5.jar -DgroupId=com.cmabreu -DartifactId=mylocal-lib -Dversion=1.5 -D packaging=jar -DgeneratePom=true

并将 JAR 添加到我的 Maven 存储库(本地)。 然后我将所需的依赖项标记添加到我的 POM 文件并构建我的项目。

但是,当我提交 Github 时,我不会发送我的自定义 JAR(是另一个项目)。

问题是:我如何告诉 Travis-CI 在其存储库中使用此自定义 JAR 来构建我的项目,而不将其发送到 Github?

如果您的公司有私有存储库 (Artifactory/Nexus),您可能希望将其部署到那里 (deploy:deploy-file)。这将是一次性的手动步骤。这样你就不需要在每次构建时都将它安装到本地仓库中。

如果不是您的情况,则无法在不将其签入源代码管理的情况下将其安装到本地存储库中。

你可以让 Travis 去 run a custom build script。如果您可以获取 JAR 或者如果您已经将其签入您的存储库,您可以 运行 在 运行 自己测试之前使用 mvn install 命令。

我有一个非常相似的问题,经过一番研究,我做了以下事情。

首先添加before_install命令如

before_install:
    - wget -P somewhere/ http://some.url/awesome.jar
    - mvn validate

行验证非常重要,因为我们需要通过 maven-install 插件显式安装 third-party jar。

第二步是修改你的pom.xml文件如下:

<build>
    ....
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-install-plugin</artifactId>
            <version>2.5.1</version>
            <configuration>
                <groupId>your.group</groupId>
                <artifactId>your_artifact</artifactId>
                <version>some.version</version>
                <packaging>jar</packaging>
                <file>${basedir}/match_this_with_wget/awesome.jar</file>
            </configuration>
            <executions>
                <execution>
                    <id>install-jar-lib</id>
                    <goals>
                        <goal>install-file</goal>
                    <goals>
                    <phase>validate</validate>
                </execution>
            </executions>
        </plugin>
        ....

在您的本地存储库中,您可以将 jar 文件放在所需的位置并使用 .gitignore 以避免将其提交到 git 存储库中。

git clone等其他下载命令替换wget命令也很容易。但是,如果您使用 maven-install 安装它,您可能需要将 jar 文件放入您的存储库中。当您在 travis-ci 上执行 before_install 命令时,您的密码应该就在您的存储库根目录中。

不是推荐的解决方案,而是一个非常有用的解决方法:

  • 在项目的主目录中创建一个目录。我们称它为

    $projectBasseDir/lib

  • 将所有外部 jar 文件放入此文件夹。

  • 在 pom 文件中为您的依赖项添加如下范围和系统路径: < scope>system< /scope > < systemPath>${project.basedir}/lib/yourJar.jar< /systemPath>

  • 将此 lib/ 目录推送到 github

  • 上的项目仓库
  • Travis 构建工作正常

如果本地不存在 jars,那么我们需要向您的存储库添加一个 before_start 脚本,它基本上是这样做的: mkdir 库/ wget -P "lib/" <a href="http://urlForYourJar.jar" rel="nofollow">http://urlForYourJar.jar</a>

它再次运行良好。