当构建版本不是-SNAPSHOT时,如何启用Maven配置文件?

内容86

我正在尝试将gitflow-helper-maven-plugin扩展名用于我的Maven构建。

因此,我想配置我的项目,以便在构建发行版时运行一些额外的步骤,并在编译SNAPSHOT版本时跳过它们,但是我找不到找到${project.version}包含profile的方法的方法-SNAPSHOT

有什么建议吗?

A_Di-Matteo

下面是一种可能的方法,该方法是您始终可以if在Maven构建中模拟语句的方式:

  • 使用buid-helper-maven-plugin及其regex-property目标解析默认${project.version}属性,并${only.when.is.snapshot.used}使用valuetrue${project.version}SNAPSHOT发现后缀的情况下创建一个新属性
  • 配置maven-source-plugin来执行它的jar使用与特殊配置目标skipSource选项,并传递给它的新的(动态的)${only.when.is.snapshot.used}属性:在快照它将具有值的情况下,true因此跳过执行,否则将具有值${project.version},其将被用作false并且因此不跳过这个执行
  • maven-javadoc-plugin使用其skip选项配置与上述相同

上面方法的一个示例是:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>1.10</version>
    <executions>
        <execution>
            <!-- sets the only.when.is.snapshot.used property to true if SNAPSHOT was used, 
                to the project version otherwise -->
            <id>build-helper-regex-is-snapshot-used</id>
            <phase>validate</phase>
            <goals>
                <goal>regex-property</goal>
            </goals>
            <configuration>
                <name>only.when.is.snapshot.used</name>
                <value>${project.version}</value>
                <regex>.*-SNAPSHOT</regex>
                <replacement>true</replacement>
                <failIfNoMatch>false</failIfNoMatch>
            </configuration>
        </execution>
    </executions>
</plugin>

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
    <version>3.0.1</version>
    <executions>
        <execution>
            <id>create-sources</id>
            <phase>package</phase>
            <goals>
                <goal>jar</goal>
            </goals>
            <configuration>
                <!-- skip when version is SNAPSHOT -->
                <skipSource>${only.when.is.snapshot.used}</skipSource>
            </configuration>
        </execution>
    </executions>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>2.10.4</version>
    <executions>
        <execution>
            <id>create-javadoc</id>
            <phase>package</phase>
            <goals>
                <goal>jar</goal>
            </goals>
            <configuration>
                <!-- skip when version is SNAPSHOT -->
                <skip>${only.when.is.snapshot.used}</skip>
            </configuration>
        </execution>
    </executions>
</plugin>

也就是说,不需要配置文件,仅当将使用非SNAPSHOT版本时才动态启用此配置,而无需任何其他配置(命令行选项或任何其他选项)。


提醒一下,您也可以查看maven-release-plugin,它仅在执行发行版时才有效地调用source和javadoc插件,而不会增加上述方法的复杂性。

否则,您可以简单地使用来自Maven Super POM的默认配置文件,该配置文件实际上将调用相同的source和javadoc插件,并且可以通过将属性performRelease设置为value来激活true也就是说,在任何Maven项目中,您都可以调用以下命令:

mvn clean package -DperformRelease=true

或者

mvn clean package -Prelease-profile

您将自动从默认的超级配置文件中受益,并会生成源代码和javadoc jar,尽管此方法应作为最后的选择,因为在将来的发行版中可能会将配置文件从超级pom中删除。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么安装时pip版本不是9?

来自分类Dev

仅当安装的版本不是某个特定版本时,如何编写脚本以安装BleachBit?

来自分类Dev

仅当安装的版本不是某个特定版本时,如何编写脚本以安装BleachBit?

来自分类Dev

当gem版本不是语义时,如何使捆绑程序使用tilder运算符?

来自分类Dev

尝试构建Android源时的Java版本不正确

来自分类Dev

为什么在每晚使用堆栈构建时 GHC 版本不符合预期?

来自分类Dev

创建浏览器构建时模块的元数据版本不匹配

来自分类Dev

当子模块pom定义属性时,执行Maven构建配置文件

来自分类Dev

为什么通过 yum 安装 pip 时 pip 版本不是最新的

来自分类Dev

在gem版本不是语义的情况下,如何使捆绑程序使用tilder运算符?

来自分类Dev

如何使用junit-jupiter和junit-vintage配置文件创建Maven构建

来自分类Dev

如何从命令行激活Maven配置文件(以构建子系统)

来自分类Dev

如何在Java配置文件(不是XML)中启用Spring MVC应用程序支持的异步

来自分类Dev

Maven antrun插件在构建和配置文件标签中

来自分类Dev

Maven 构建中的旧 jdk 配置文件

来自分类Dev

如何在构建 bootJar 时在 Spring Boot 上设置活动配置文件?

来自分类Dev

无法在iPhone上构建应用程序“兼容的iOS版本不提供预配置的iOS设备。”

来自分类Dev

无法在iPhone上构建应用程序“兼容的iOS版本不提供预配置的iOS设备。”

来自分类Dev

4.1以下版本不支持通知构建器。如何指定仅在4.1和更高版本上使用通知生成器,而忽略4.1以下的版本

来自分类Dev

如何同时构建Snapshot和Release版本的Maven项目

来自分类Dev

每个版本不同的文件

来自分类Dev

构建Docker映像时使用主机上的配置文件

来自分类Dev

在柯南配置文件设置和CMake之间检测到编译器版本不匹配

来自分类Dev

Ace 6.2.0及更高版本无需配置文件即可启用和禁用编译功能

来自分类Dev

如何使用Gradle基于配置文件构建Quarkus容器?

来自分类Dev

如何检查配置文件中的 MySQL/MariaDB 版本?

来自分类Dev

Powershell:检查是否启用了防火墙(不是配置文件)

来自分类Dev

在配置文件中启用HAVE_RELIABLE_STACKTRACE选项并构建内核以启用实时内核修补程序是否足够?

来自分类Dev

诗歌-版本不兼容时强制安装?

Related 相关文章

  1. 1

    为什么安装时pip版本不是9?

  2. 2

    仅当安装的版本不是某个特定版本时,如何编写脚本以安装BleachBit?

  3. 3

    仅当安装的版本不是某个特定版本时,如何编写脚本以安装BleachBit?

  4. 4

    当gem版本不是语义时,如何使捆绑程序使用tilder运算符?

  5. 5

    尝试构建Android源时的Java版本不正确

  6. 6

    为什么在每晚使用堆栈构建时 GHC 版本不符合预期?

  7. 7

    创建浏览器构建时模块的元数据版本不匹配

  8. 8

    当子模块pom定义属性时,执行Maven构建配置文件

  9. 9

    为什么通过 yum 安装 pip 时 pip 版本不是最新的

  10. 10

    在gem版本不是语义的情况下,如何使捆绑程序使用tilder运算符?

  11. 11

    如何使用junit-jupiter和junit-vintage配置文件创建Maven构建

  12. 12

    如何从命令行激活Maven配置文件(以构建子系统)

  13. 13

    如何在Java配置文件(不是XML)中启用Spring MVC应用程序支持的异步

  14. 14

    Maven antrun插件在构建和配置文件标签中

  15. 15

    Maven 构建中的旧 jdk 配置文件

  16. 16

    如何在构建 bootJar 时在 Spring Boot 上设置活动配置文件?

  17. 17

    无法在iPhone上构建应用程序“兼容的iOS版本不提供预配置的iOS设备。”

  18. 18

    无法在iPhone上构建应用程序“兼容的iOS版本不提供预配置的iOS设备。”

  19. 19

    4.1以下版本不支持通知构建器。如何指定仅在4.1和更高版本上使用通知生成器,而忽略4.1以下的版本

  20. 20

    如何同时构建Snapshot和Release版本的Maven项目

  21. 21

    每个版本不同的文件

  22. 22

    构建Docker映像时使用主机上的配置文件

  23. 23

    在柯南配置文件设置和CMake之间检测到编译器版本不匹配

  24. 24

    Ace 6.2.0及更高版本无需配置文件即可启用和禁用编译功能

  25. 25

    如何使用Gradle基于配置文件构建Quarkus容器?

  26. 26

    如何检查配置文件中的 MySQL/MariaDB 版本?

  27. 27

    Powershell:检查是否启用了防火墙(不是配置文件)

  28. 28

    在配置文件中启用HAVE_RELIABLE_STACKTRACE选项并构建内核以启用实时内核修补程序是否足够?

  29. 29

    诗歌-版本不兼容时强制安装?

热门标签

归档