代码之家  ›  专栏  ›  技术社区  ›  jarnohenneman

如何在maven war包中包含/排除资源

  •  0
  • jarnohenneman  · 技术社区  · 7 年前

    在我的MAVEN项目中,我试图基于配置文件(在我的settings.xml中定义)用某些资源构建一个war包。

    pom。xml:

    <plugin>
        <artifactId>maven-war-plugin</artifactId>
            <version>3.1.0</version>
            <configuration>
                <!-- archiveClasses>true</archiveClasses Enable this line will remove compiled classes from package -->
                <!-- packagingExcludes>view/test/**,WEB-INF/classes/**</packagingExcludes Does not work -->
                <packagingExcludes>view/test/**</packagingExcludes>
                <webResources>
                    <resource>
                        <directory>src/main/webapp/</directory>
                        <filtering>false</filtering>
                        <includes>
                            <include>**/**</include>
                        </includes>
                    </resource>
                    <resource>
                        <directory>resources/</directory>
                        <targetPath>WEB-INF/classes</targetPath>
                        <filtering>false</filtering>
                        <!-- excludes><exclude>**</exclude></excludes Does not work -->
                        <includes>
                            <include>ehcache.xml</include>
                            <include>${include.files}</include>
                        </includes>
                    </resource>
                </webResources>
                <includeEmptyDirectories>true</includeEmptyDirectories>
            </configuration>
        </plugin>
    

    src/main/resources 文件夹是空的,所以在我的包中没有不需要的配置文件。但是当我移动我的 resources 文件夹到 src/main/resources 资源 文件夹

    资源 src/main/resources 据我所知,这是您存储配置文件等资源的地方(“最佳实践”)?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Henry Hoendervangers    7 年前

    看看是否可以以某种方式重新组织资源,以便可以对资源应用过滤器,并且每个配置中都始终存在大多数文件。 假设您有一个属性文件,对于不同的配置需要不同的值。可以用如下变量替换该值:

    url=${url}
    mode=${mode}
    

    <profile>
      <id>production</id> 
         <build>
             <resources>
                 <resource>
                     <directory>src/main/resources</directory>
                     <filtering>true</filtering>                  
                     <excludes>
                         <exclude>[non-resource file #1]</exclude>
                         <exclude>[non-resource file #2]</exclude>
                         <exclude>[non-resource file #3]</exclude>
                     </excludes>
                 </resource>
             </resources>
         </build>      
         <properties>
             <url>www.something.com</url>
             <mode>production</mode>
         </properties>
     </profile>
     <profile>
         <id>development</id>
         <build>
             <resources>
                 <resource>
                     <directory>src/main/resources</directory>
                     <filtering>true</filtering>                  
                     <excludes>
                         <exclude>[non-resource file #1]</exclude>
                         <exclude>[non-resource file #2]</exclude>
                         <exclude>[non-resource file #3]</exclude>
                     </excludes>
                 </resource>
             </resources>
         </build>      
         <properties>
             <url>localhost:8080/something</url>
             <mode>development</mode>
         </properties>
     </profile>