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

隐身守侯 提交于 2019-12-06 07:49:50

问题


I have a project that uses a JAR with no maven repo. I made this by myself.

Before build my project, I do this on my console:

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

and add the JAR to my maven repo (local). Then I add the required dependency tag to my POM file and build my project.

But, when I commit to Github, I do not send my custom JAR (is another project).

The question is: how can I tell Travis-CI to build my project using this custom JAR in its repository without send it to Github?


回答1:


Not a recommended solution but a very useful workaround:

  • Make a directory inside project's home. Let's call it

    $projectBasseDir/lib

  • Put all your external jars in this folder.

  • In the pom file add scope and systemPath as follows for your dependency: < scope>system< /scope > < systemPath>${project.basedir}/lib/yourJar.jar< /systemPath>

  • Push this lib/ directory to your project repo on github

  • Travis builds work fine with this

If the jars are not present locally, then we need to add a before_start script to your repo which basically does this: mkdir lib/ wget -P "lib/" http://urlForYourJar.jar

and it works great again.




回答2:


I had a very similar problem and after some research, I did the following.

First of all, add before_install command such as

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

The line validate is very important, since we need to explicitly install the third-party jar via the maven-install plugin.

The second step is to modify your pom.xml file as follows:

<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>
        ....

In your local repository, you can put the jar file in the desired place and use .gitignore to avoid committing it into the git repo.

It is also very easy to replace the wget command with other downloading commands such as git clone. However, you may need to put the jar file within your repository if you install it with maven-install. When you are executing the before_install commands on travis-ci, your pwd should be right at your repo root.




回答3:


If your company has private repo (Artifactory/Nexus) you may want to deploy it there (deploy:deploy-file). This would be one time manual step. Than you wouldn't need to install it into local repo on every build.

If it's not your case, there is no way how to install it into local repo without checking it into your source control.




回答4:


You can get Travis to run a custom build script. If you can wget the JAR or if you've checked it into your repo, you can run that mvn install command before running your tests yourself.



来源:https://stackoverflow.com/questions/28703491/how-can-i-add-a-3rd-party-jar-to-my-travis-ci-maven-build

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!