在pom.xml

时间:2018-07-09 17:34:15

标签: xml maven pom.xml nexus

我有一个pom.xml,它充当子pom层次结构的根POM,每个子pom负责部署它自己的对应二进制工件。

我本来想让根POM存储这些子pom的列表,以便我可以对子POM进行一些预处理。这是一个房间pom.xml的示例:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>company.group1.project1</groupId>
<artifactId>assets</artifactId>
<version>0.4.1</version>
<packaging>pom</packaging>

<parent>
    <groupId>company.shared</groupId>
    <artifactId>repo-info-pom</artifactId>
    <version>1.0.0</version>
</parent>

<deployArtifacts exportType="bin" srcType="txt">
    <artifacts>
        <artifact>
            <artifactId>assetA</artifactId>
            <groupId>company.group1.project1.assets</groupId>
            <version>0.4.1</version>
            <fileFolder>./assetA/</fileFolder>
        </artifact>
        <artifact>
            <artifactId>assetB</artifactId>
            <groupId>company.group1.project1.assets</groupId>
            <version>0.4.1</version>
            <fileFolder>./anotherFolder/assetB</fileFolder>
        </artifact>
            <artifact>
            <artifactId>assetC</artifactId>
            <groupId>company.group1.project1.assets</groupId>
            <version>0.4.1</version>
            <fileFolder>./yet/another/folder/assetC</fileFolder>
        </artifact>
    </artifacts>
</deployArtifacts>

</project>

授予POM自己的XSD,该XSD拒绝自定义标签,如果我尝试使用它,则会出现“格式错误的POM”错误。

我一直在寻找替代方案:

  1. 该标签不允许我添加目录信息,除非它是for when is system,我认为我不应该使用该信息,因为我希望root POM也能够引用最终来自存储库中的工件。

  2. 该列表仅引用本地项目中的工件,并且似乎不允许我附加诸如groupID或版本号之类的信息。

  3. 作为最后的选择,我正在考虑从根pom.xml删除列表,将其移至另一个xml,并让根pom.xml使用build-helper将这个新的xml附加为另一个工件-maven插件。

这是我第一次设置和配置Maven,所以我想知道还有哪些其他可行的选项。预先感谢您的任何反馈。

1 个答案:

答案 0 :(得分:0)

看看https://maven.apache.org/pom.html#Aggregation似乎符合您的要求。这样就可以从根执行Maven并构建/部署其所有子级。