gpt4 book ai didi

maven - 如何在 maven-remote-resources-plugin 中使用 /

转载 作者:行者123 更新时间:2023-12-04 05:31:00 24 4
gpt4 key购买 nike

我正在尝试按照 this 使用 maven-remote-resources-plugin例如,在多个 Maven 模块之间选择性地共享公共(public)资源,我在选择性地导入资源时遇到了很多困难。

我正在尝试使用 <includes><excludes>元素如下。我没有在任何地方看到 doco 中提到的插件,但是 eclipse 在命令完成中将它们作为有效选项提供,并且在运行 pom.xml 时我没有收到任何错误。到目前为止我还没有得到<includes><excludes>对导入的资源有任何影响

我的pom的相关部分是;

共享资源

<build>
<plugins>
<plugin>
<artifactId>maven-remote-resources-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>bundle</goal>
</goals>
</execution>
</executions>
<configuration>
<includes>
<include>**/*</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>

<dependencies>
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-remote-resources-plugin</artifactId>
<version>1.3</version>
</dependency>
</dependencies>

资源消费者
<build>
...
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-remote-resources-plugin</artifactId>
<version>1.3</version>
<configuration>
<resourceBunldes>
<resourceBundle>myApp:myApp_sharedresources:${project.version}</resourceBundle>
</resourceBundles>
<outputDirectory>${project.build.outputDirectory}</outputDirectory>
<includes>
<include>theOnlyResourceIWant.properties</include>
</includes>
</configuration>
<executions>
<execution>
<goals>
<goal>process</goal>
</goals>
<phase>generate-resources</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>

<dependencies>
<dependency>
<groupId>myApp</groupId>
<artifactId>myApp_sharedresources</artifactId>
<version>1.0</version>
</dependency>
</dependencies>

我尝试了许多 <includes> 的组合和 <excludes>但到目前为止,一切都没有影响。

那么,是
<includes></includes>


<excludes></excludes>

maven-remote-resources-plugin 配置的有效元素,以及如何使用它们?
我可以合理地将资源分离到单独的 maven 模块中,但这可能会创建大量的单文件 maven 模块并添加大量额外的 xml,所以如果可能的话我想避免它。

我真的不想开始浏览插件源代码,但这是下一步。

最佳答案

我为要导入的共享资源使用临时目录并对其进行过滤。

远程资源插件配置如下。这会将所有共享资源复制到项目中的临时目录中。设置attached为 false 表示它们不包含在您的最终项目 Artifact 中,这使您有机会使用 Maven 的正常资源处理来选择要包含的那些。

<plugin>
<artifactId>maven-remote-resources-plugin</artifactId>
<configuration>
<resourceBundles>
<resourceBundle>myApp:myApp_sharedresources:${project.version}</resourceBundle>
</resourceBundles>
<attached>false</attached>
<outputDirectory>${project.build.directory}/shared-resources</outputDirectory>
</configuration>
<executions>
<execution>
<goals>
<goal>process</goal>
</goals>
<phase>generate-resources</phase>
</execution>
</executions>
</plugin>

资源定义。当 maven-resource-plugin运行(它默认绑定(bind)到 jars/wars/ears 的生命周期),它将使用共享资源目录以及正常的 src/main/resources目录您需要同时定义两者。 (如果需要,您也可以启用资源过滤。)
<resources>
<resource>
<directory>${project.build.directory}/shared-resources</directory>
<includes>
<include>theOnlyResourceIWant.properties</include>
</includes>
</resource>
<resource>
<directory>${basedir}/src/main/resources</directory>
</resource>
</resources>

我建议将共享目录设为 ${project.build.directory} 的子目录,所以 clean生命周期无需更改即可工作。

关于maven - 如何在 maven-remote-resources-plugin 中使用 <includes>/<excludes>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12635863/

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