从POM创建原型:缺少属性

时间:2019-03-24 11:00:19

标签: maven maven-archetype

我创建了一个Maven原型,并想在我的存储库中创建它的示例项目,这似乎是一个不寻常的用例。

由于我不想手动创建原型,因此添加了以下执行:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-archetype-plugin</artifactId>
    <configuration>
        <archetypeGroupId>my.company.archetypes</archetypeGroupId>
        <archetypeVersion>${project.version}</archetypeVersion>

        <groupId>org.acme</groupId>
        <version>0.1.2-SNAPSHOT</version>
        <interactiveMode>false</interactiveMode>
    </configuration>
    <executions>
        <execution>
            <id>archetype-one</id>
            <goals>
                <goal>generate</goal>
            </goals>
            <phase>package</phase>
            <configuration>
                <archetypeArtifactId>archetype-one</archetypeArtifactId>
                <artifactId>one</artifactId>
                <package>org.acme.one</package>
            </configuration>
        </execution>
    </executions>
</plugin>

这导致以下异常:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:2.2:generate (archetype-one) on project examples: Archetype my.company.archetypes:archetype-one:0.9.0-SNAPSHOT is not configured
[ERROR]     Property groupId is missing.
[ERROR]     Property artifactId is missing.
[ERROR]     Property package is missing.

这不是真的,因为我已经定义了所有这些。至少IDE在该位置上建议这些标签。四处移动配置标签也无济于事。

因此,我检查了generate的{​​{3}},然后瞧瞧,目标GAV不存在。

当直接从另一个 pom.xml 生成原型时,如何定义它们?

1 个答案:

答案 0 :(得分:0)

所以我最终使用了完全不同的Maven插件:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>archetype-one</id>
            <goals>
                <goal>exec</goal>
            </goals>
            <phase>package</phase>
            <configuration>
                <executable>mvn</executable>>
                <arguments>
                    <argument>archetype:generate</argument>

                    <argument>-DarchetypeGroupId=my.company.archetypes</argument>
                    <argument>-DarchetypeVersion=${project.version}</argument>
                    <argument>-DgroupId=org.acme</argument>
                    <argument>-Dversion=0.1.2-SNAPSHOT</argument>
                    <argument>-DinteractiveMode=false</argument>

                    <argument>-DarchetypeArtifactId=archetype-one</argument>
                    <argument>-DartifactId=one</argument>
                    <argument>-Dpackage=org.acme.one</argument>
                </arguments>
            </configuration>
        </execution>
    </executions>
</plugin>

由于我想生成多个原型,因此我将前六个参数放入通用的<configuration>块中,并在其余三个后面附加<arguments combine.children="append">