Maven:是否可以为多个配置文件指定同一插件的不同版本,同时激活所有这些配置文件?

时间:2020-04-21 07:15:51

标签: maven maven-3

我有一个Maven项目,其中使用Swagger创建了一些API定义。使用openapi-generator-maven-plugin,我同时生成了JAVA代码和TypeScript代码以使用API​​。

在我的pom.xml配置中,我为每种语言定义了一个Maven配置文件。我想在生成JAVA代码时使用此插件的版本4.2.0,在生成TypeScript代码时使用版本4.3.0:我在两个配置文件中都使用版本4.2.0,但是一些新功能出现在版本4.3.0中对于TypeScript生成,经过一些测试,我发现我希望避免JAVA生成的一些副作用。

每个配置文件被单独激活时,一切都会按预期运行。 但是,如果我同时激活两个配置文件,则Maven使用的是该插件的最新版本:4.3.0。

由于我的Maven项目将在CI / CD服务器中构建,所以我想知道是否可以在单个构建期间基于配置文件使用同一版本的同一个maven插件,还是我需要创建一个每个配置文件都单独构建?

我的pom.xml看起来像这样:

<profiles>
    <profile>
        <id>java</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.openapitools</groupId>
                    <artifactId>openapi-generator-maven-plugin</artifactId>
                    <version>4.2.0</version>
                    <executions>
                        <execution>
                            <id>generate-api-java-model</id>
                            <goals>
                                <goal>generate</goal>
                            </goals>
                            <phase>generate-sources</phase>
                            <configuration>
                                ...
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>
    <profile>
        <id>typescript</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.openapitools</groupId>
                    <artifactId>openapi-generator-maven-plugin</artifactId>
                    <version>4.3.0</version>
                    <executions>
                        <execution>
                            <id>generate-api-ts-model</id>
                            <goals>
                                <goal>generate</goal>
                            </goals>
                            <phase>generate-sources</phase>
                            <configuration>
                              ...
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

1 个答案:

答案 0 :(得分:2)

否,每个版本只能有一个插件版本。