如何将第 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>
它再次运行良好。
我有一个使用没有 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>
它再次运行良好。