如何在Maven中仅针对"war"包类型运行插件?

Yur*_*sov 5 java war maven-plugin maven

提供了两个Maven项目:J(jar),W(war); 两者都取决于父母P(pom).父级有一个插件,只能为项目"W"运行.

如何做到这一点:

  • 无需创建单独的父项目
  • 不使用配置文件(因此仍然必须执行构建mvn clean package)

J(罐子)

<project>
  <parent>
    <artifactId>P</artifactId>
  </parent>
  <artifactId>J</artifactId>
  <packaging>jar</packaging>
</project>
Run Code Online (Sandbox Code Playgroud)

W(战争)

<project>
  <parent>
    <artifactId>P</artifactId>
  </parent>
  <artifactId>W</artifactId>
  <packaging>war</packaging>
</project>
Run Code Online (Sandbox Code Playgroud)

P(pom)

<project>
  <artifactId>P</artifactId>
  <packaging>pom</packaging>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>jar</goal>
            </goals>
            <configuration>
              <classifier>classes</classifier>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>
Run Code Online (Sandbox Code Playgroud)

Rag*_*ram 0

一种方法是将插件放置在父 pom 中的<pluginManagement>部分中。此后,在您希望其运行的项目中指定插件。

在您的情况下,您将为项目 J 而不是 W 指定插件。

  <build>
    ...
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>...</groupId>
          <artifactId>...</artifactId>
          ...  other plugin details ...
        </plugin>
      </plugins>
    </pluginManagement>
    ...
   </build>
Run Code Online (Sandbox Code Playgroud)

J

  <build>
    ...
      <plugins>
        <plugin>
          <groupId>...</groupId>
          <artifactId>...</artifactId>
        <plugin>
      </plugins>
    ...
   </build>
Run Code Online (Sandbox Code Playgroud)