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

时间:2015-02-24 18:29:29

标签: maven travis-ci

我有一个使用没有maven repo的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 repo(本地)。 然后我将所需的依赖标记添加到我的POM文件并构建我的项目。

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

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

4 个答案:

答案 0 :(得分:4)

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

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

    $ projectBasseDir / lib中

  • 将所有外部广告投放在此文件夹中。

  • 在pom文件中为依赖项添加scope和systemPath,如下所示: < scope>system< /scope > < systemPath>${project.basedir}/lib/yourJar.jar< /systemPath>

  • 将此lib /目录推送到github上的项目仓库

  • Travis使用此
  • 构建正常工作

如果罐子本地不存在,那么我们需要在你的仓库中添加一个before_start脚本,基本上这样做: mkdir lib/ wget -P "lib/" http://urlForYourJar.jar

它再次运作良好。

答案 1 :(得分: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存储库中。

使用wget等其他下载命令替换git clone命令也非常容易。但是,如果使用maven-install安装jar文件,则可能需要将jar文件放在存储库中。当你在travis-ci上执行before_install命令时,你的pwd应该在你的repo root上。

答案 2 :(得分:0)

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

如果不是您的情况,则无法将其安装到本地仓库而无需将其检入您的源代码管理中。

答案 3 :(得分:0)

你可以让Travis到run a custom build script。如果你可以忘记JAR或者你已经将它检入你的仓库,你可以在自己运行测试之前运行那个mvn install命令。