Maven WAR plugin does not read configuration when running in <execute> tag

I am trying to get Maven to do multiple executions with a WAR plugin. It works great if defined like this:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
<version>1.0</version>
    <configuration>
    (...)
    </configuration>

      

But not like this

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>1.0</version>
    <executions>
        <execution>
            <phase>package</phase>
            <configuration>
            (...)
            </configuration>
        </execution>
    </executions>
</plugin>

      

Where Maven cannot find any resources defined in the tag <configuration>

. Am I missing something important and / or is there a better way to create multiple WAR files in the same assembly?

+2


source to share


2 answers


I haven't seen how to disable the default war, but you can use one config outside the element <executions>

and the rest inside:

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.1-beta-1</version>
    <configuration>
      <classifier>with-junk</classifier>
      <!-- temp directory that the webapp is assembled in (each must be different) -->
      <webappDirectory>${project.build.directory}/build-with-junk</webappDirectory>
      <webResources>
        <resource>
          <directory>junk</directory>
          <includes>
            <include>**/*</include>
          </includes>
        </resource>
      </webResources>
    </configuration>
    <executions>
      <execution>
        <id>add-other-junk</id>
        <phase>package</phase>
        <goals>
          <goal>war</goal>
        </goals>
        <!-- exclude prior configuration -->
        <inherited>false</inherited>
        <configuration>
          <classifier>with-other-junk</classifier>
          <webappDirectory>${project.build.directory}/build-other-junk</webappDirectory>
          <webResources>
            <resource>
              <directory>other-junk</directory>
              <includes>
                <include>**/*</include>
              </includes>
            </resource>
          </webResources>
        </configuration>
      </execution>
    </executions>
  </plugin>

      



For me this will build artifact-0.1-with-junk.war

and artifact-0.1-with-other-junk.war

and both have the correct files.

+1


source


The second version only applies the configuration to the phase you specified. I can't confirm this right now, but I would assume it doesn't apply because you didn't specify a target for the config to apply to.

If you add a target definition war

to an execution, will it be applied? For example:



<executions>
    <execution>
        <phase>package</phase>
        <goals>
          <goal>war</goal>
        </goals>
        <configuration>
        (...)
        </configuration>
    </execution>
</executions>

      

0


source







All Articles