在组装期间合并 parent 和 child pom

Merge parent and child pom during assembly

我有一个 multi-module Maven 项目。我想组装每个 child 所以当它们被解压缩并用 maven 执行时不依赖于 parent pom。

有没有办法用汇编插件来处理 "merge" parent pom 和 child pom?

原项目:

├── pom.xml
├── README.md
├── module1
│   ├── assembly.xml
│   ├── pom.xml
│   ├── README.md
│   └── src
└── module2
    ├── assembly.xml
    ├── pom.xml
    ├── README.md
    └── src

组装包(zip):

moduleX
├── pom.xml  <-- merged pom
├── README.md
└── src

打包的程序集将由我们组织以外的外部客户使用,因此他无权访问我们的存储库。

更新: 正如 JF Meier 建议的那样,使用 flatten-maven-plugin 解决了我的问题。

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>flatten-maven-plugin</artifactId>
                <version>1.2.1</version>
                <executions>
                    <execution>
                        <id>flatten</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>flatten</goal>
                        </goals>
                        <configuration>
                            <flattenMode>bom</flattenMode>
                            <pomElements>
                                <build>keep</build>
                            </pomElements>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

然后在我的 assembly.xml 上添加生成的 .flattened-pom.xml 并将其重命名为 pom.xml:

<files>
    <file>
        <source>.flattened-pom.xml</source>
        <destName>pom.xml</destName>
    </file>
</files> 

我猜你想要

https://www.mojohaus.org/flatten-maven-plugin/

它允许您将父 POM "merge" 放入您的 POM 中。