Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Jenkins和maven将WAR文件发布到Artifactory_Java_Maven_Jenkins_Artifactory - Fatal编程技术网

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

Java 使用Jenkins和maven将WAR文件发布到Artifactory,java,maven,jenkins,artifactory,Java,Maven,Jenkins,Artifactory,我正在尝试在Jenkins中配置以下工作流模式: 构建WAR文件并发布到Artifactory 将WAR文件从Artifactory部署到DEV&发布到Artifactory 发展商回购协议 将WAR文件从开发人员部署到QA,并发布到用于QA的Artifactory Repo {QA到回归等等} 我好像错过了什么。应用程序的组件(jar文件等)似乎可以部署到目标版本/快照目录中的Artifactory。然而,最终的战争神器似乎并没有存储在Artifactory中,尽管Jenkins清楚地识别出神

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

  • 构建WAR文件并发布到Artifactory
  • 将WAR文件从Artifactory部署到DEV&发布到Artifactory 发展商回购协议
  • 将WAR文件从开发人员部署到QA,并发布到用于QA的Artifactory Repo
  • {QA到回归等等}
  • 我好像错过了什么。应用程序的组件(jar文件等)似乎可以部署到目标版本/快照目录中的Artifactory。然而,最终的战争神器似乎并没有存储在Artifactory中,尽管Jenkins清楚地识别出神器是成功构建的

    我使用的是标准目标:干净安装。 我还尝试过(没有任何更改):清理安装重新打包

    我已经安装了Jenkins的标准Artifactory插件

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

    预构建和构建

    • 放弃旧版本(保留5个)
    • 复制工件的权限
    • git(具有正常工作所需的凭证)
    • 启用Artifactory发布管理(一个版本适用于所有模块)
    • Build使用POM和“clean”和“install”选项
    后期构建

    • 归档工件(**/*.war)
    • 将工件部署到Artifactory(发布目录和快照目录存在并且似乎工作正常,在单击refresh时从Artifactory服务器正确加载)
    • 捕获和发布生成信息
    • 包括环境变量(仅配置默认值)
    还包括可编辑的电子邮件通知生成后步骤

    我可以使用这些相同的选项,它们将成功地将最终的WAR文件部署到Tomcat实例,而不会出现问题。Jenkins还根据配置保留WAR文件。但是Artifactory似乎存储组件,而不是最终的WAR文件

    我一直在玩配置选项,结果很长时间都是空的。非常感谢您的帮助

    编辑:这是POM文件中的一个片段,用于构建war文件时的“干净安装”目标

    <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>
    
    
    清洁安装
    org.apache.maven.plugins
    maven surefire插件
    2.18.1
    **/*Tests.java
    **/*Test.java
    **/Test*.java
    真的
    org.apache.maven.plugins
    maven编译器插件
    ${maven.compiler.plugin.version}
    ${java.version}
    ${java.version}
    org.apache.maven.plugins
    maven战争插件
    ${maven.war.plugin.version}
    假的
    假的
    ${project.version}
    ${git.revision}
    ${git.commitCount}
    org.apache.maven.plugins
    maven发布插件
    真的
    
    War文件似乎是Maven项目的第二个人工制品

    你能看看这里,告诉我们它是否解决了你的问题吗?

    您是否使用Maven war插件构建war?它是否有一个单独的Maven模块用于战争?你在构建信息中看到了吗?您看到了吗?Maven集成插件和Maven项目插件都已安装、处于活动状态并且是最新的。该应用程序构建良好,并生成一个war文件:appName.war。该war文件被复制到Tomcat实例中,并在包括QA测试在内的情况下正常工作。然而,当发布到Artifactory时,它不存储war文件,而是存储war文件的组件,如果我想让它做代码快照而不是工件快照,那就好了。我怀疑问题与Maven项目有关,所以我问的是正在使用的Maven插件(不是Jenkins插件)。看起来Artifactory Jenkins插件无法识别web模块maven war插件正在使用。我试图从POM发布到部分,但评论太长。这就是它的名称:`org.apache.maven.plugins maven war plugin`尝试将此作为解决方案,但没有解决我的问题。