代码之家  ›  专栏  ›  技术社区  ›  norbjd

父POM:在子项目之间共享公共配置文件

  •  2
  • norbjd  · 技术社区  · 7 年前

    我目前正在创建一个带有所有必要配置的父POM,作为我所有个人项目的基础。最终的目标是通过继承父POM来拥有较小的子项目(=配置很少),并更容易地引导项目。

    但我面临着插件需要外部文件进行配置的问题(如 maven-assembly-plugin ,在下面的示例中显示)。我只希望有一个外部文件(用于 maven汇编插件 ) 在所有子项目中共享 ,而不是在所有子项目中重新定义同一文件。

    这里有一个完整的例子。

    以身作则

    我的父母是波姆( my-group-id:parent:1.0.0:pom ),定义的配置 maven汇编插件 ,详情如下:

    <project>
      <groupId>my-group-id</groupId>
      <artifactId>parent</artifactId>
      <version>1.0.0</version>
      <packaging>pom</packaging>
      <build>
        <pluginManagement>
          <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.1.0</version>
            <executions>
              <execution>
                <id>create-assembly</id>
                <phase>package</phase>
                <goals>
                  <goal>single</goal>
                </goals>
                <configuration>
                  <descriptors>
                    <descriptor>src/assembly/bin.xml</descriptor>
                  </descriptors>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </pluginManagement>
      </build>
    </project>
    

    如果我希望所有子项目都具有 在父项目中定义的配置中,我必须编写以下内容(子项目的示例 child1 ) :

    <project>
      <parent>
        <groupId>my-group-id</groupId>
        <artifactId>parent</artifactId>
        <version>1.0.0</version>
      </parent>
      <artifactId>child1</artifactId>
      <version>0.0.1</version>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
          </plugin>
        </plugins>
      </build>
    </project>
    

    但是,正如我在导言中所说的:使用该配置,我必须为每个子级创建一个描述符文件( src/assembly/bin.xml )在它自己的项目中。

    此外,事实证明,我所有的子项目都具有相同的特性 bin.xml 文件我会把里面的东西保存下来,但要知道,包装永远是个问题 .tar.gz 存档,外部库在一个 lib 文件夹。

    )似乎是解决方案,但我不知道如何在所有子项目中共享它。不管怎样,我不想有一个 bin.xml 每个孩子的项目。

    这个问题可以扩展,并且不仅涉及 maven汇编插件 ,因为还有其他可配置外部文件的插件( docker-maven-plugin Dockerfile 可以提供)。但至少,找到解决问题的办法 maven汇编插件 具体案例将非常有用!

    0 回复  |  直到 7 年前