如何在war文件中包含jar依赖项目的资源

时间:2015-09-29 07:14:35

标签: java maven

maven项目WEBAPP是一个战争包装。 这取决于CORE项目(罐子包装) 在WEBAPP中,我想从CORE项目访问src / main / resource目录下的资源。 Mvn clean install似乎没有把这些CORE资源放在war类路径中。

我需要在poms中指定哪些内容?

3 个答案:

答案 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目录下,并且可以像任何其他类路径资源一样正确访问。

相关问题