Я хочу распространять войну моего веб-приложения, сгенерированного с помощью Maven с исходным кодом внутри него. Как это сделать с Maven?
Как создать WAR с исходным кодом в Maven?
Ответ 1
Можно настроить плагин maven-war, чтобы включить исходный каталог, поскольку он был веб-ресурсом:
<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>
Источники java будут включены в каталог sources
на войне. Конечно, вы должны адаптировать каталог ресурсов к своему собственному макету maven.
Ответ 2
Если вы хотите, чтобы исходные файлы в том же каталоге, что и файлы классов, которые вы использовали бы:
<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>
Ответ 3
Обычно я думаю, что вы пойдете следующим образом: (это не будет включать исходные файлы, но предоставляет их как отдельные файлы)
<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>
Ответ 4
В вашем военном проекте 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>
В проектах, которые вы хотите, используйте его:
<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>