我有一个使用没有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?
答案 0 :(得分:4)
不是推荐的解决方案,而是非常有用的解决方法:
在项目的主目录中创建一个目录。我们称之为
$ projectBasseDir / lib中
将所有外部广告投放在此文件夹中。
在pom文件中为依赖项添加scope和systemPath,如下所示:
< scope>system< /scope >
< systemPath>${project.basedir}/lib/yourJar.jar< /systemPath>
将此lib /目录推送到github上的项目仓库
如果罐子本地不存在,那么我们需要在你的仓库中添加一个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命令。