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

3

我有一个使用没有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?

4个回答

4

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

  • 在项目主目录内新建一个文件夹。我们称之为

    $projectBasseDir/lib

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

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

  • 将此lib/目录推送到您的Github项目存储库上

  • 使用Travis构建时工作正常

如果本地没有这些jar,则需要向存储库添加一个before_start脚本,该脚本基本上执行以下操作: mkdir lib/ wget -P "lib/" http://urlForYourJar.jar

它可以再次正常工作。


systemPath 可以是一个 URL 吗? - Magno C
不是,但这只需要一行代码。你需要在你的仓库中添加一个 before_start 脚本,它基本上会获取所有的 jar 包并将其放入 lib/ 目录中。我已经尝试过了,它可以顺利运行 :) - gonephishing

2

我曾经遇到过类似的问题,经过一番研究,我做了以下操作。

首先,在before_install命令中加入如下内容:

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

验证行非常���要,因为我们需要通过maven-install插件显式安装第三方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命令时,pwd应该位于您的存储库根目录。

0

您可以让Travis 运行自定义构建脚本。如果您可以使用wget获取JAR文件或将其检入您的存储库中,则可以在自己运行测试之前运行mvn install命令。


0

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

如果不是这种情况,没有办法在不将其检入源代码控制的情况下将其安装到本地存储库中。


好的,我没有办法部署到Maven仓库。我只需按照上述一步操作安装我的jar包,然后每次构建(mvn clean package)时它都会在那里找到我的库。必须有一种方法在Travis上运行预脚本,使其下载jar包并运行load-to-local-repo脚本... - Magno C

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