Maven 配置文件插件

Posted

技术标签:

【中文标题】Maven 配置文件插件【英文标题】:Maven profile plugins 【发布时间】:2020-01-02 18:20:02 【问题描述】:

我有一个在 pom.xml 中定义了许多配置文件的 maven 应用程序。我想在(几乎)每个配置文件中运行 webstart-maven-plugin。显而易见的解决方案是将插件定义复制粘贴到 pom.xml 中的所有配置文件部分。但是这个插件的参数很多,修改起来也不容易维护……

是否有可能定义一次插件参数并在所需的配置文件中引用/包含/覆盖这个参数化的参数?

【问题讨论】:

为什么你有很多个人资料?是不是其他 Maven 机制可以让您更轻松/更好地实现目标? 这是一个多项目应用程序。有一个具有通用功能的 core.jar,但如果客户要求额外的功能,它将在“额外”的 jar 中实现。所以所有配置文件都指定了“extra_userx.jar”的依赖关系。由于它是一个 java webstart 应用程序,我使用 webstart-maven-plugin 来创建 jnlp、签署 jars 等。 还有一件事:由于 java webstart 应用程序的签名 jar 必须包含 jnlp 或 jnlp 模板,其中包含库列表。 webstart-maven-plugin 也有帮助。 【参考方案1】:

我可以通过定义一个父 pom 来解决它。在父 pom <packaging>pom</packaging> 中指定并将参数化的 webstart-maven-plugin 放置在其中。子 pom 必须引用父:

<parent>
    <groupId>com.bgy.application</groupId>
    <artifactId>parent</artifactId>
    <version>1.0-SNAPSHOT</version>
    <relativePath>./parent.xml</relativePath>
</parent>

在不需要执行插件的子 pom 的配置文件中:

<plugin>
     <groupId>org.codehaus.mojo</groupId>
     <artifactId>webstart-maven-plugin</artifactId>                
     <executions>
         <execution>
             <phase>none</phase>
         </execution>
     </executions>
 </plugin>  

在需要执行的配置文件中:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>webstart-maven-plugin</artifactId>                
</plugin> 

(可以省略)

【讨论】:

以上是关于Maven 配置文件插件的主要内容,如果未能解决你的问题,请参考以下文章

maven配置tomcat插件,及在maven打包时文件名不包含版本号

maven,pom.xml里配置了插件,是怎么使用的

使用 maven 插件设置时 Spring Boot 配置文件不活动

是否可以使用 Maven POM 文件为 Maven 发布插件配置 GIT Tag?

从多个配置文件组合后,Maven antrun 插件缺少目标任务

Android Gradle 插件将自定义 Gradle 插件上传到自建 Maven 仓库 ④ ( 默认生成的 pom 文件 | Maven 中的 pom 配置 | 自定义 pom 文件节点 )