从 POM 创建原型:缺少 属性

Creating an Archetype From POM: Property is Missing

我创建了一个 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 在那个位置上提出了这些标签。移动配置标签也无济于事。

所以我检查了 generatesource code,你瞧,目标 GAV 不存在。

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

所以我最终使用了一个完全不同的 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">