maven项目WEBAPP是一个战争包装。 这取决于CORE项目(罐子包装) 在WEBAPP中,我想从CORE项目访问src / main / resource目录下的资源。 Mvn clean install似乎没有把这些CORE资源放在war类路径中。
我需要在poms中指定哪些内容?
答案 0 :(得分:1)
添加到src/main/resource
目录的资源默认包含在结果jar
中。
您可以使用以下方式访问它们:
this.getClass().getResource("yourFile");
和
this.getClass().getResourceAsStream("yourFile");
您可以手动打开/解压缩资源(使用zip工具)来验证资源是否包含在jar
中。您的资源应位于jar
文件的根目录。
答案 1 :(得分:0)
使用maven依赖项将核心项目添加到主项目
<dependency>
<groupId>Group ID of Core Project</groupId>
<artifactId>Artifact ID of Core Project</artifactId>
<version>Core Project Verion</version>
</dependency>
然后在Core项目中创建一个方法来从核心 - 资源中读取属性。然后通过该方法返回值。
因此,在将Core项目依赖项添加到主项目后,您可以访问该方法并读取主项目中的属性。
答案 2 :(得分:0)
Maven在构建war存档时不包含jar依赖项资源。 maven-remote-resources
插件是实现它的一种方式。我被this SO question on copying resources
几乎完全复制example page of the plugin documentation。我想要包含在WEBAPP中的资源位于src/main/resources/rulesproperties directory
下。在CORE pom.xml插件部分添加:
<plugin>
<artifactId>maven-remote-resources-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<goals>
<goal>bundle</goal>
</goals>
</execution>
</executions>
<configuration>
<includes>
<include>**/rulesproperties/*</include>
</includes>
</configuration>
</plugin>
在WEBAPP pom.xml插件部分,添加
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-remote-resources-plugin</artifactId>
<version>1.5</version>
<configuration>
<resourceBundles>
<resourceBundle>mvnGroupId:CORE:${project.version}</resourceBundle>
</resourceBundles>
</configuration>
<executions>
<execution>
<goals>
<goal>process</goal>
</goals>
</execution>
</executions>
</plugin>
在为webapp项目mvn clean install
之后,rulesproperties
目录及其内容位于WEB-INF/CLASSES
目录下,并且可以像任何其他类路径资源一样正确访问。