代码之家  ›  专栏  ›  技术社区  ›  Stijn Geukens

Maven:使用多个配置文件时使用公共/共享插件

  •  10
  • Stijn Geukens  · 技术社区  · 14 年前

    我有一个项目正在使用多个配置文件。每个配置文件使用以下插件:

    • Maven编译器插件
    • Maven资源插件
    • Maven Antrun插件
    • Maven Surefire插件
    • Maven War插件

    但是,用粗体标记的插件是配置文件之间唯一存在差异的插件(将使用Antrun插件复制不同的配置文件)。其他4个插件的配置与所有配置文件完全相同。

    现在的问题是:是否有一些方法可以只包含这些公共插件一次,但默认情况下仍将它们用于所有配置文件?

    类似:

    <shared><plugin1><plugin2>...</shared>
    <profile><plugin3></profile>
    <配置文件><插件3></profile>

    谢谢,
    斯泰恩

    2 回复  |  直到 9 年前
        1
  •  12
  •   Romain Linsolas    14 年前

    如果一个插件被所有配置文件使用,只需在 <build> 部分:

    <project>
    ...
        <build>
            <plugins>
                 Your shared plugins go here...
            </plugins>
    
        <profiles>
            Definition of profiles...
        </profiles>
    </project>
    

    这样,您将只在 profiles 块。

        2
  •  6
  •   Péter Török    14 年前

    只需在您的 build 章节:

    <build>
        <plugins>
            <plugin>
                <groupId>...</groupId>
                <artifactId>plugin1</artifactId>
            </plugin>
            ...
        </plugins>
    </build>
    

    然后在您的配置文件中添加特定的插件:

    <profiles>
        <profile>
            <id>...</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>...</groupId>
                        <artifactId>plugin3</artifactId>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
    

    您还可以在不同的配置文件中以不同的方式配置相同的插件:

    <profiles>
        <profile>
            <id>profile1</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>...</groupId>
                        <artifactId>plugin1</artifactId>
                        <configuration>
                            <setting>value1</setting>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>profile2</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>...</groupId>
                        <artifactId>plugin1</artifactId>
                        <configuration>
                            <setting>value2</setting>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>