Maven pom插件没有在构建上执行

时间:2018-02-08 11:06:58

标签: java xml maven intellij-idea pom.xml

我正在练习Maven而且我已经撞墙了。我在IntelliJ上安装了PlantUml插件,我正在尝试将其设置为在编译时始终从源文件生成新图像。我正在使用this插件来生成图像,我已经按如下方式配置了pom.xml文件:

<build>
  <pluginManagement>
    <plugins>
      <plugin>
        <groupId>com.github.jeluard</groupId>
        <artifactId>plantuml-maven-plugin</artifactId>
        <version>1.2</version>
        <executions>
          <execution>
            <id>GeneratePlantUml</id>
            <phase>generate-resources</phase>
            <goals>
              <goal>generate</goal>
            </goals>
            <configuration>
              <outputDirectory>${basedir}/images</outputDirectory>
            </configuration>
          </execution>
        </executions>
        <configuration>
          <sourceFiles>
            <directory>${basedir}/plantuml</directory>
            <includes>
              <include>TestGeneratorDiagram.puml</include>
            </includes>
          </sourceFiles>
          <outputDirectory>${basedir}/images</outputDirectory>
        </configuration>
        <dependencies>
          <dependency>
            <groupId>net.sourceforge.plantuml</groupId>
            <artifactId>plantuml</artifactId>
            <version>8031</version>
          </dependency>
        </dependencies>
      </plugin>
    <plugins>
  </pluginManagement>
<build>

当我使用终端命令指定目标时,这可以正常工作:

mvn compile com.github.jeluard:plantuml-maven-plugin:generate

但是,如果我只写:

,它就不起作用
mvn compile

据我所知,这也应该有效。我已经尝试在编译时设置阶段,但它没有改变任何东西。我现在已经搜索了几个小时的解决方案,但我还没找到。有没有人知道如何通过配置pom来强制插件在编译时生成新图像?

2 个答案:

答案 0 :(得分:1)

您已将配置放入pluginManagement。您需要将其放入plugins外部 pluginManagement)。

pluginManagement只是覆盖/指定配置和版本号。

查看Maven: What is pluginManagement?

答案 1 :(得分:-1)

你的插件和你的执行是配置à“生成资源”阶段而不是你想要的编译阶段。 有关阶段的详细信息,请参阅此link

改变这个:

<execution>
        <id>GeneratePlantUml</id>
        <phase>generate-resources</phase>
        <goals>
          <goal>generate</goal>
        </goals>

到这个

<execution>
        <id>GeneratePlantUml</id>
        <phase>compile</phase>
        <goals>
          <goal>generate</goal>
        </goals>

它必须有效。