gpt4 book ai didi

java - 我如何将我的资源放入多模块 Web 项目中已部署的 WAR 中

转载 作者:行者123 更新时间:2023-11-28 22:42:56 24 4
gpt4 key购买 nike

好的,所以我有一个由 WAR 和 3 个 JAR 组成的多模块 Web 项目(Spring、Hibernate 等等)。其中 2 个 JAR 是核心 WAR 和 JAR 的可选扩展。这些扩展由 maven 配置文件使用,这些配置文件将它们添加为依赖项或不添加。这一切都很好。

然而,在 Tomcat 服务器上安装项目时,我注意到我无法编辑扩展模块的属性文件,因为它们被打包在一个 JAR 文件中。因此,当我使用 Maven 打包我的项目时,我正在寻找一种方法将我的属性文件从我的扩展 JAR 移动到我的可部署 WAR 的资源文件夹。这意味着当扩展被激活时,资源将仅位于 WEB 资源文件夹中。

我怎样才能最好地做到这一点?

EDIT-01

好的,所以我尝试使用 qza 建议的 build-helper-maven-plugin。

测试战 POM:

<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>add-resource</id>
<phase>process-resources</phase>
<goals>
<goal>add-resource</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>../extTestA-jar/src/main/resources</directory>
<targetPath>resources</targetPath>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

我的项目布局如下:

<Parent>
--><extTestA-jar>
--><extTestB-jar>
--><test-jar>
--><test-war>

我的资源在“src/main/resources”

谁能看出其中的问题?我试过使用和不使用 targetPath,但似乎都不起作用。我也试过在生成资源阶段这样做,但仍然没有成功。我在想路径可能是错误的,所以我也尝试了其他路径,但仍然没有运气。

最佳答案

一种解决方案是使用 Maven Build Helper Plugin和执行目标:

add-resources

完整的例子是:

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.3</version>
<executions>
<execution>
<id>add-resources</id>
<phase>process-resources</phase>
<goals>
<goal>add-resource</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>../data-module/src/main/resources</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>

另一种方法是使用 Maven Resources Plugin和目标

copy-resources

对于这个插件,用法与此类似:

<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-resources</id>
<phase>generate-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>src/main/resources</outputDirectory>
<overwrite>true</overwrite>
<resources>
<resource>
<directory>../data-module/src/main/resources</directory>
<includes>
<include>*.properties</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>

这两个插件都可以帮助完成这样的任务。

关于java - 我如何将我的资源放入多模块 Web 项目中已部署的 WAR 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21480429/

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