我们的项目设置为打包 WAR,这对于本地开发非常有用:
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<id>package-war</id>
<phase>package</phase>
<goals>
<goal>war</goal>
</goals>
...
包含在这场战争中的是应用程序使用的映射器文件和 logback 文件,它们位于:src/main/resources/logback.xml
和/src/main/resources/mappers/our-mapper.xml
.
在构建战争的过程中,这些文件被发送到我们期望的地方并希望它们在下面our.war/WEB-INF/classes/logback.xml
和our.war/WEB-INF/classes/mappers/our-mapper.xml
当我们打包我们的程序集以进行部署时,我们需要将这些文件从战争中分离出来,我们使用我们的程序集描述符来做到这一点:
<assembly>
<formats>
<format>tar.gz</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<files>
<file>
<source>target/${build.finalName}.war</source>
<outputDirectory>${tomcat-instance}/webapps</outputDirectory>
</file>
<file>
<source>src/main/resources/logback.xml</source>
<outputDirectory>${tomcat-instance}/resources/</outputDirectory>
</file>
</files>
<fileSets>
<fileSet>
<directory>src/main/resources/mapper</directory>
<outputDirectory>${tomcat-instance}/resources/mapper/</outputDirectory>
<includes>
<include>**/*</include>
</includes>
</fileSet>
</fileSets>
</assembly>
并在 Maven 中配置:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptors>
<descriptor>src/main/resources/our-assembly.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
这构造了程序集,但我担心的是logback.xml
andmappers/our-mapper.xml
文件仍然包含在war
包含在assembly.tar.gz
.
是否可以保持程序集外部的战争包含.xml
文件的配置,因为它已经包含文件,但也有组装程序集内部.tar.gz
的战争排除这些相同的文件,因此它们不会在类路径上出现两次?
提前感谢您的帮助。