Run an ant task in maven build phase before war is packaged?

前端 未结 2 1215
醉梦人生
醉梦人生 2020-12-16 19:11

When deploying a webapp I need to update some variables in UI resources, unzip some assets and concat some files, currently this is achieved via an ant task. I\'m trying to

相关标签:
2条回答
  • 2020-12-16 19:55

    Since I did not get any answer on my comment I guess that you want to stay using maven-antrun-plugin.

    From what I've learned and experienced, if two plugins are to be executed on the same phase, then they will be executed in the order they are declared in pom.xml.

    For this to work you will have to add the maven-war-plugin in the <plugins/> list after the maven-antrun-plugin.

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>1.6</version>
        <executions>
            <execution>
                <id>deploy-ui</id>
                <phase>package</phase>
                <inherited>false</inherited>
                <configuration>
                    <target>
                        <property name="buildDir" value="${project.build.directory}/${project.build.finalName}" />
                        <ant antfile="build.xml" target="static-assets" />
                    </target>
                </configuration>
                <goals>
                    <goal>run</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.3</version>
        <executions>
            <execution>
                <!-- First step is to disable the default-war build step. -->
                <id>default-war</id>
                <phase>none</phase>
            </execution>
            <execution>
                <!-- Second step is to create an exploded war. Done in prepare-package -->
                <id>war-exploded</id>
                <phase>prepare-package</phase>
                <goals>
                    <goal>exploded</goal>
                </goals>
            </execution>
            <execution>
                <!-- Last step is to make sure that the war is built in the package phase -->
                <id>custom-war</id>
                <phase>package</phase>
                <goals>
                    <goal>war</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
    

    Added some more executions so that the default-war is first disabled, then the war is exploded and lastly the war is packaged.

    0 讨论(0)
  • 2020-12-16 19:59

    As you observed this is a place where the lifecycle doesn't provide the granularity needed. I answered a similar question for someone earlier. It's not an exact answer to your question but the technique may apply.

    0 讨论(0)
提交回复
热议问题