Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.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 如何与maven和jenkins一起从快照过渡到发布_Java_Maven_Jenkins - Fatal编程技术网

Java 如何与maven和jenkins一起从快照过渡到发布

Java 如何与maven和jenkins一起从快照过渡到发布,java,maven,jenkins,Java,Maven,Jenkins,我使用Maven作为构建工具,使用Jenkins作为构建服务器。我正在努力使它易于开发和构建 我有以下资料: 全球pom <project> <!-- ... --> <artifactId>global-pom</artifactId> <!-- ... --> </project> 全球pom 库pom(父pom是全局的),它有大量公共库 <project> <!-

我使用Maven作为构建工具,使用Jenkins作为构建服务器。我正在努力使它易于开发和构建

我有以下资料:

全球pom

<project>
    <!-- ... -->
    <artifactId>global-pom</artifactId>
    <!-- ... -->
</project>

全球pom
库pom(父pom是全局的),它有大量公共库

<project>
    <!-- ... -->
    <version>2.0-SNAPSHOT</version>
    <artifactId>libraries-pom</artifactId>

    <parent>
        <!-- ... -->
        <artifactId>global-pom</artifactId>
        <version>2.0-SNAPSHOT</version>
    </parent>

    <properties>
        <libraries.version>2.0-SNAPSHOT</libraries.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <!-- ... -->
                <artifactId>library-one</artifactId>
                <version>${libraries.version}</version>
            </dependency>
            <dependency>
                <!-- ... -->
                <artifactId>library-two</artifactId>
                <version>${libraries.version}</version>
            </dependency>
            <!-- ... -->
        </dependencies>
    </dependencyManagement>

    <modules>
        <module>library-one</module>
        <module>library-two</module>
        <!-- ... -->
    </modules>
</project>

2.0-快照
图书馆
全球pom
2.0-快照
2.0-快照
一号图书馆
${libraries.version}
图书馆二
${libraries.version}
一号图书馆
图书馆二
公共库(父pom是库)pom将如下所示:

<project>
    <!-- ... -->
    <version>2.0-SNAPSHOT</version>
    <artifactId>library-one</artifactId>

    <parent>
        <!-- ... -->
        <artifactId>libraries-pom</artifactId>
        <version>2.0-SNAPSHOT</version>
    </parent>

    <!-- ... -->
</project>
<project>
    <!-- ... -->
    <version>1.0-SNAPSHOT</version>
    <artifactId>service-one</artifactId>

    <parent>
        <!-- ... -->
        <artifactId>libraries-pom</artifactId>
        <version>2.0-SNAPSHOT</version>
    </parent>

    <!-- ... -->
</project>

2.0-快照
一号图书馆
图书馆
2.0-快照
然后是一个服务pom(父pom是库),看起来可能是这样的:

<project>
    <!-- ... -->
    <version>2.0-SNAPSHOT</version>
    <artifactId>library-one</artifactId>

    <parent>
        <!-- ... -->
        <artifactId>libraries-pom</artifactId>
        <version>2.0-SNAPSHOT</version>
    </parent>

    <!-- ... -->
</project>
<project>
    <!-- ... -->
    <version>1.0-SNAPSHOT</version>
    <artifactId>service-one</artifactId>

    <parent>
        <!-- ... -->
        <artifactId>libraries-pom</artifactId>
        <version>2.0-SNAPSHOT</version>
    </parent>

    <!-- ... -->
</project>

1.0-快照
服务一
图书馆
2.0-快照
现在,当我在当地发展时,这一切都很好。我可以在Intellij项目中使用所有这些POM,如果我更改其中一个库中的某些内容以用于其中一个项目,那么当我在本地构建和运行时,它知道首先构建库,等等

每当签入某个内容时,就会在Jenkins上自动生成快照版本

当我真正发布时,我不想使用快照版本,我想使用“真实”版本,我想知道如何最好地管理它,以免影响开发或发布


有人有什么想法吗?理想情况下,当我想要发布时,我想转到我的构建服务器并单击构建,它会自动为我整理所有内容-这可能吗?

您需要使用Maven发布插件,通过在批处理模式下发出一些Maven命令行指令来执行所有工件的自动发布

为此,请在父pom中包括以下配置:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-release-plugin</artifactId>
    <version>2.5.1</version>
    <configuration>
      <autoVersionSubmodules>true</autoVersionSubmodules>
      <tagNameFormat>v@{project.version}</tagNameFormat>
      <goals>deploy</goals>
    </configuration>
</plugin>
这将阻止对git的推送。如果发行版有问题,那么您可以执行
mvn发行版:回滚
并在本地清理git repo,然后修复发行版插件配置

要在Jenkins中运行,您需要创建一个新作业,该作业将在批处理模式下运行
prepare
perform
命令