开发者

How to generate a WAR with the source code in Maven?

开发者 https://www.devze.com 2023-01-14 05:25 出处:网络
I want to distribute the war of my web application generated with Maven with th开发者_运维技巧e source code inside it. How to do that with Maven?It is possible configure the maven-war-plugin to includ

I want to distribute the war of my web application generated with Maven with th开发者_运维技巧e source code inside it. How to do that with Maven?


It is possible configure the maven-war-plugin to include the source directory as it was a web resource:

 <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <configuration>
          <webResources>
            <resource>
              <directory>${build.sourceDirectory}</directory>
              <targetPath>sources</targetPath>
            </resource>
          </webResources>
        </configuration>
      </plugin>
    </plugins>
  </build>

The java sources will be included in a sources directory in the war. Of course you should adapt the resource directory to your own maven layout.


If you want the source files in the same directory as the class files you would use:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
                <webResources>
                    <resource>
                        <directory>${build.sourceDirectory}</directory>
                        <targetPath>WEB-INF/classes</targetPath>
                    </resource>
                </webResources>
            </configuration>
        </plugin>


Usually I think you would go this way: (this won't include the source files, but provides them as separate files)

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <executions>
                <execution>
                    <id>attach-sources</id>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <executions>
                <execution>
                    <id>attach-javadocs</id>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>


At your war project's pom.xml:

<build>
    ...
    <pluginManagement>
        <plugins>
            <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <attachClasses>true</attachClasses>
                    <classesClassifier>classes</classesClassifier>
                </configuration>
            </plugin>
            ...
        </plugins>
    </pluginManagement>
</build>

In the projects you want do use it:

<dependency>
    <groupId>my-war-group</groupId>
    <artifactId>my-war-artifact-id</artifactId>
    <version>my-war-version</version>

    <classifier>classes</classifier> <!-- THIS IS THE IMPORTANT LINE! -->
</dependency>
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号