当前位置: 首页 > 知识库问答 >
问题:

使用Jenkins和maven将WAR文件发布到artiFactory

乐正翰
2023-03-14

我正在尝试在 Jenkins 中配置以下工作流模式:

  1. 构建战争文件

我似乎错过了一些东西。应用程序的组件(jar 文件等)似乎在目标版本/快照目录中很好地部署到 Artifactory 中。然而,最终的WAR神器似乎并没有存储在Artifactory中,尽管Jenkins清楚地指出该神器是成功构建的。

我使用的是标准目标:全新安装。我也尝试过(没有改变):全新安装重新打包

我安装了Jenkins的标准Artifactory插件。

我检查了第一个Jenkins作业的以下配置,以构建项目并将其发布到Artifactory:

预构建

  • 丢弃旧版本(保留 5)
  • 复制工件的权限
  • git(具有正常工作的必要凭据)
  • 启用工件发布管理(所有模块一个版本)
  • 构建使用POM以及“干净”和“安装”选项。

后期制作

  • 存档工件 (**/*.war)
  • 将工件部署到工件(发布和快照目录存在并且似乎工作正常,并且当我单击刷新时,它们从工件html" target="_blank">服务器正确加载)
  • 捕获

还包括一个可编辑的电子邮件通知构建后步骤。

我可以使用这些相同的选项,它们将成功地将最终的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>

共有1个答案

王凯旋
2023-03-14

看起来War文件是你的Maven项目的第二个人工制品。

你能看看这里并告诉我们它是否能解决你的问题吗?Maven将辅助文件部署到存储库

 类似资料:
  • 我正在努力通过Gradle任务使用Jenkinsfile将war文件部署到Nexus存储库。 战争正在成功地创建。我对部署JAR也没有问题(因为到处都有如何做到这一点的例子)。 所以我在我的: 带插头: 存储库的URL也在构建脚本中正确指定(使用jar测试发布工作正常) 和Jenkinsfile: 目前,我从jenkins build中得到以下错误: 任务:发布MavenWebPublicatio

  • 问题内容: 我在装有Tomcat 8的同一服务器上运行Jenkins 1.6(并且也尝试使用Jenkins 2.0)。我需要将Maven多模块应用程序部署到Tomcat Web应用程序。它有两个必须部署的子模块中的war文件。Deploy插件最多支持Tomcat 7,并且工作正常。但是,问题是我需要使用Tomcat 8,因为我的Web应用程序无法在Tomcat 7上运行。是否可以将War文件从Je

  • 我试图将构建Jenkins/Maven的结果发布到Nexus存储库。 我使用clean install maven目标进行构建。 我已经为jenkins安装并配置了Nexus Repository Manager Publisher插件,因此它可以在构建后的步骤中发布到我的Nexus Repo。 问题是: 我不明白,没有办法从jenkins builds用这个插件发布快照到nexus??

  • 我可以通过运行Grails命令“war”来构建一个war文件,并且war文件运行完美。 说到maven,它根本不起作用!我通过运行“clean package”构建项目,并跳过了所有测试(不知道这是否会影响战争) war文件是在目标目录中生成的,但我注意到war文件的大小与grails命令生成的文件不同。另外,当我将maven生成的war文件部署到tomcat服务器上时,它无法运行。 另一个问题是

  • 我想执行一个maven版本,在运行于jdk 1.7的Jenkins安装上编译java 1.8代码 我有一个使用JDK参数插件用Java1.8编译的项目。它在进行常规构建时有效。 当我使用maven发布插件进行maven发布时,它会将JVM与java 1.7相结合,而不是插件上指定的版本。我猜它需要环境中的java版本。 如果我将JAVA_HOME for the job设置为1.8,它就会工作。

  • 我的计划是建立一个设置,在这个设置中,我可以基于我正在运行的maven目标发布快照和版本。我当前的pom包含以下详细信息- 我的maven settings.xml包含服务器条目- 当我运行命令时 编辑1- 我运行了,部署插件的日志是-