Configuration 使用Maven从默认的src/main/resources位置将某些资源文件选择到WAR中
我试图控制哪些文件进入由Configuration 使用Maven从默认的src/main/resources位置将某些资源文件选择到WAR中,configuration,maven-2,release-builds,Configuration,Maven 2,Release Builds,我试图控制哪些文件进入由mvn-packagegoal创建的WAR包。具体地说,我想从每个包的默认src/main/resources文件夹中排除一些文件(我正在尝试为不同的环境构建/打包) 我尝试使用maven war插件,但失败了。如果我添加此配置(用于测试): src/main/resources WEB-INF/课程 *.xml …myWEB-INF/classes仍将包含XML文件。这是因为webResources参数似乎复制了复制过程(上面的配置实际上是有效的,一个文件没有被复制
mvn-package
goal创建的WAR包。具体地说,我想从每个包的默认src/main/resources
文件夹中排除一些文件(我正在尝试为不同的环境构建/打包)
我尝试使用maven war插件,但失败了。如果我添加此配置(用于测试):
src/main/resources
WEB-INF/课程
*.xml
…myWEB-INF/classes
仍将包含XML文件。这是因为webResources
参数似乎复制了复制过程(上面的配置实际上是有效的,一个文件没有被复制……但它们会在其他过程中被复制)
国家:
所有Maven 2项目的默认资源目录都是src/main/resources,它将在WAR中以target/classes和WEB-INF/classes结束。目录结构将在该过程中保留
WAR插件还能够通过webResources参数包含默认资源目录中找不到的资源
这有点令人困惑。这是否意味着:
参数是maven-war-plugin中的一项功能,它允许仅从webResources
文件夹外部包含文件?如果是这样,我们如何从src/main/resources
内部修改复制的文件src/main/resources
参数是maven-war-plugin中的一项功能,它允许从webResources
文件夹外部包含文件?如果是,如何配置它来执行此操作src/main/resources
- 还有别的选择吗
src/main/Resources
)中的资源将复制到生成输出目录(target/classes
)中。然后,在package
阶段,将target/classes
的内容打包到一个分布式存档中,就像一场战争一样,在这种情况下,它最终会被打包到WEB-INF/classes
中
因此,如果您想控制哪些资源最终进入WEB-INF/classes
,您需要控制哪些资源最终进入target/classes
,即以某种方式改变的行为,特别是resources:resources
的目标
为此,(这可能不是直观的),您可以在pom的resources
元素中声明exclude
或include
元素,如中所示。应用于默认资源目录:
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>**/*.xml</exclude>
</excludes>
</resource>
</resources>
</build>
<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>
但我不认为这是您在这里寻找的,建议使用上述建议的方法。请参阅。我只是在这里直接回答这个问题:
- webResources参数是maven war插件中的一项功能,它允许仅从src/main/resources文件夹外部包含文件?如果是这样,我们如何从src/main/resources内部修改复制的文件
- webResources参数是maven war插件中的一项功能,它允许文件也包含在src/main/resources文件夹之外?如果是,如何配置它来执行此操作
它是前者,
maven-war-plugin
中的webResources
参数只允许包含来自外部src/main/resources
的额外资源。它不允许为src/main/resources
本身配置includes/excludes。您是在尝试使用同一个mvn包为不同的环境构建,还是通过使用概要文件来控制它?我实际上尝试了排除“全局”resources
元素中的文件。结果是被排除的文件没有进入target/classes
,但是它们仍然进入target/mypackage-1.0.0-SNAPSHOT
。但我会再检查一遍,确认一下,也许我在那里犯了一些错误:/@Tuukka-Hmm。。。是的,请再检查一遍(有一个干净的版本)。@Pascal:这样试过之后,它似乎起作用了。也许我之前犯了一个错误,对整个过程有点困惑:/所以你的建议绝对是正确的。由于表达式的非法启动
,我仍然存在获取编译失败
的问题,因为Maven无法“识别”我在测试中使用的注释。然而,这似乎是一个常见的Maven问题,与以任何方式排除文件无关。下一步我会努力解决:)谢谢你的支持!幸运的是,编译问题很快就解决了,原因是:。因此,我设法验证了打包是否按预期进行,文件是否按预期排除。选择这个作为公认的答案。
<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>
<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>