Tuu*_*nen 7 configuration maven-2 release-builds
我试图控制哪些文件进入由mvn package目标创建的WAR包.具体来说,我想从src/main/resources每个包的默认文件夹中排除一些文件(我正在尝试为不同的环境进行构建/包).
我尝试使用maven-war-plugin但失败了.如果我添加此配置(用于测试):
<webResources>
<resource>
<directory>src/main/resources</directory>
<targetPath>WEB-INF/classes</targetPath>
<excludes>
<exclude>*.xml</exclude>
</excludes>
</resource>
</webResources>
Run Code Online (Sandbox Code Playgroud)
...我WEB-INF/classes仍然会包含XML文件.这是因为webResources参数似乎复制了复制过程(上面的配置实际上有效,文件不会被复制......但是它们会被复制到其他一些进程中).
所有Maven 2项目的默认资源目录是src/main/resources,它们将最终出现在目标/类和WAR中的WEB-INF/classes中.目录结构将在此过程中保留.
WAR插件还能够通过webResources参数包含默认资源目录中找不到的资源.
这有点令人困惑.这是否意味着:
webResources参数是maven-war-plugin中的一项功能,它允许文件仅包含在外部src/main/resources文件夹中?如果是这样,我们如何从内部改变复制的文件src/main/resources?webResources参数是Maven的战争插件,使文件的功能将包括也从外部src/main/resources文件夹?如果是这样,如何配置来执行此操作?Pas*_*ent 12
我试图控制哪些文件进入由mvn包目标创建的WAR包.具体来说,我想从每个包的默认src/main/resources文件夹中排除一些文件
在此阶段,默认资源目录(src/main/resources)中的资源将复制到构建输出目录(target/classes)中process-resources.然后,在该package阶段期间,将获取内容target/classes并将其打包到分布式存档(如WAR)中,并WEB-INF/classes在此情况下结束.
因此,如果你想控制最终的资源WEB-INF/classes,你需要控制最终会产生什么资源,target/classes即以某种方式改变绑定到process-resources阶段的目标的行为,特别resources:resources是Maven Resources Plugin的目标.
为此,(这可能不直观),您可以在pom的元素内声明exclude或include元素resources,如包含和排除文件和目录中所示.应用于默认资源目录:
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>**/*.xml</exclude>
</excludes>
</resource>
</resources>
</build>
Run Code Online (Sandbox Code Playgroud)
如果您想对不同的环境使用自定义排除规则,请将其与配置文件结合使用.例如:
<project>
...
<profiles>
<profile>
<id>env-uat</id>
<activation>
<property>
<name>env</name>
<value>uat</value>
</property>
</activation>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>**/*.xml</exclude>
</excludes>
</resource>
</resources>
</build>
</profile>
</profiles>
</project>
Run Code Online (Sandbox Code Playgroud)
使用此配置文件时,xml文件不会结束target/classes,因此它们不会WEB-INF/classes在最后的战争中结束.
我尝试使用maven-war-plugin但失败了.如果我添加此配置(用于测试)(...),我的WEB-INF/classes仍将包含XML文件
你在这里做的是添加一个额外的资源目录,它似乎是已经包含的默认资源目录.因此,无论您要排除什么,这都没有任何效果,因为文件target/classes在process-resources任何时候都被复制到了,因此仍然是最终的WEB-INF/classes.
换句话说,webResources当您想要添加不属于默认资源目录的额外资源时使用:
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1</version>
<configuration>
<webResources>
<resource>
<!-- this is relative to the pom.xml directory -->
<directory>extra-resources</directory>
</resource>
</webResources>
</configuration>
</plugin>
</plugins>
</build>
...
</project>
Run Code Online (Sandbox Code Playgroud)
但我不认为这是你在这里寻找的,并建议使用上面建议的方法.
| 归档时间: |
|
| 查看次数: |
5917 次 |
| 最近记录: |