我正在尝试在 Jenkins 中配置以下工作流模式:
- 构建 WAR 文件并发布到 Artifactory
- 将 WAR 文件从 Artifactory 部署到 DEV 并发布到 Artifactory 开发 repo
- 将 WAR 文件从 DEV 部署到 QA 并发布到 Artifactory Repo 以进行 QA
- {QA 到回归等等}
我好像漏掉了什么。应用程序的组件(jar 文件等)似乎在目标发布/快照目录中很好地部署到 Artifactory。然而,尽管 Jenkins 清楚地确定 Artifact 已成功构建,但最终的 WAR Artifact 似乎并未存储在 Artifactory 中。
我使用的是标准目标:全新安装。 我也尝试过(没有改变):全新安装重新打包
我安装了 Jenkins 的标准 Artifactory 插件。
我已经检查了第一个 Jenkins Job 的以下配置,以构建项目并将其发布到 Artifactory:
预构建和构建
- 丢弃旧构建(保留 5 个)
- 复制 Artifact 的权限
- git(具有正常工作的必要凭据)
- 启用 Artifactory 发布管理(所有模块一个版本)
- 构建使用 POM 以及“清理”和“安装”选项。
构建后
- 归档 Artifact (**/*.war)
- 将 Artifact 部署到 Artifactory(发布和快照目录存在并且似乎工作正常,并且在我单击刷新时从 Artifactory 服务器正确加载)
- 捕获并发布构建信息
- 包括环境变量(仅配置默认值)
还包括一个可编辑的电子邮件通知构建后步骤。
我可以使用这些相同的选项,它们将毫无问题地将最终 WAR 文件成功部署到 Tomcat 实例。 Jenkins 还保留基于配置的 WAR 文件。但是 Artifactory 似乎存储的是组件而不是最终的 WAR 文件。
我一直在玩弄配置选项,结果一片空白太久了。感谢您提供任何帮助。
编辑:这是构建 war 文件时用于“全新安装”目标的 POM 文件的片段。
<build>
<defaultGoal>clean install</defaultGoal>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<includes>
<include>**/*Tests.java</include>
<include>**/*Test.java</include>
<include>**/Test*.java</include>
</includes>
<skipTests>true</skipTests>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven.compiler.plugin.version}</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>${maven.war.plugin.version}</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
<archive>
<addMavenDescriptor>false</addMavenDescriptor>
<manifestEntries>
<Implementation-Version>${project.version}</Implementation-Version>
<Implementation-Revision>${git.revision}</Implementation-Revision>
<X-Git-Commits-Count>${git.commitsCount}</X-Git-Commits-Count>
</manifestEntries>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<configuration>
<autoVersionSubmodules>true</autoVersionSubmodules>
</configuration>
</plugin>
</plugins>
</build>
最佳答案
看来War文件是你的Maven项目的第二个 Artifact 。
您能看看这里并告诉我们它是否解决了您的问题吗? Maven deploy secondary file to repository
关于java - 使用 Jenkins 和 maven 发布 WAR 文件到 Artifactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34405130/