gpt4 book ai didi

configuration - 使用 Maven 从默认的 src/main/resources 位置选择某些资源文件到 WAR 中

转载 作者:行者123 更新时间:2023-12-04 10:45:06 25 4
gpt4 key购买 nike

我试图控制哪些文件会生成由 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>
...我的 WEB-INF/classes仍将包含 XML 文件。这是因为 webResources参数似乎复制了复制过程(上面的配置实际上有效,文件没有被复制......而是在其他一些过程中被复制)。
Maven-war-plugin documentation状态:

The default resource directory for all Maven 2 projects is src/main/resources which will end up in target/classes and in WEB-INF/classes in the WAR. The directory structure will be preserved in the process.

The WAR Plugin is also capable of including resources not found in the default resource directory through the webResources parameter.


这有点令人困惑。是否意味着:
  • webResources参数是 maven-war-plugin 中的一个特性,它允许只从外部引入文件 src/main/resources文件夹?如果是这样,我们如何从内部更改复制的文件 src/main/resources ?
  • webResources参数是 maven-war-plugin 中的一项功能,允许从外部也包含文件 src/main/resources文件夹?如果是这样,如何配置它来做到这一点?
  • 还有其他选择吗?
  • 最佳答案

    I am trying to control which files make into the WAR package that is created by mvn package goal. Specifically, I want to exclude some files from the default src/main/resources folder for each package



    src/main/resources 期间,来自默认资源目录 ( target/classes ) 的资源被复制到构建输出目录 ( process-resources ) 中。阶段。然后,在 package期间相,内容 target/classes被提取并打包成一个分布式文件,就像一个 WAR,最终在 WEB-INF/classes在这种情况下。

    所以,如果你想控制哪些资源最终会出现在 WEB-INF/classes ,您需要控制哪些资源最终会出现在 target/classes 中即以某种方式改变 the goal bound to the process-resources phase 的行为,特别是 resources:resources Maven Resources Plugin的目标.

    为此,(这可能不直观),您可以声明 excludeinclude里面的元素 resources pom 的元素,如 Including and excluding files and directories 所示.应用于默认资源目录:
    <build>
    <resources>
    <resource>
    <directory>src/main/resources</directory>
    <excludes>
    <exclude>**/*.xml</exclude>
    </excludes>
    </resource>
    </resources>
    </build>

    如果您想为不同的环境使用自定义排除规则,请将其与 profiles 结合使用。 .例如:
    <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>

    并且使用此配置文件时,xml 文件不会以 target/classes 结尾。因此它们不会以 WEB-INF/classes 结束在最后的 war 中。

    I tried using maven-war-plugin but failed. If I add this configuration (for testing) (...) my WEB-INF/classes will still contain the XML files



    你在这里做的是添加一个 附加 资源目录,它似乎是已经包含的默认资源目录。因此,无论您要排除什么,这都无效,因为文件被复制到 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>

    但我不认为这就是您在这里寻找的内容,并建议使用上面建议的方法。

    关于configuration - 使用 Maven 从默认的 src/main/resources 位置选择某些资源文件到 WAR 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3558187/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com