作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Maven 及其程序集插件来构建我的项目的分发包,如下所示:
最佳答案
为偶然发现此问题的人扩展 Juergen 的答案 - containerDescriptorHandler
在描述符中可以取四个值(v2.3),这些是metaInf-services
, file-aggregator
, plexus
, metaInf-spring
.它有点隐藏在代码中(在包 org.apache.maven.plugin.assembly.filter
中找到),但可以聚合配置/属性文件。
这是一个聚合 META-INF/services
的示例描述符。和
位于 com.mycompany.actions
中的命名属性文件.
描述符.xml
<assembly>
...
<containerDescriptorHandlers>
<containerDescriptorHandler>
<handlerName>metaInf-services</handlerName>
</containerDescriptorHandler>
<containerDescriptorHandler>
<handlerName>file-aggregator</handlerName>
<configuration>
<filePattern>com/mycompany/actions/action.properties</filePattern>
<outputPath>com/mycompany/actions/action.properties</outputPath>
</configuration>
</containerDescriptorHandler>
</containerDescriptorHandlers>
....
</assembly>
file-aggregator
filePattern
中可以包含正则表达式匹配多个文件。以下将匹配所有文件名“action.properties”。
<filePattern>.+/action.properties</filePattern>
metaInf-services
和
metaInf-spring
用于聚合
SPI和 spring 配置文件,而
plexus
处理程序将聚合
META-INF/plexus/components.xml
一起。
ContainerDescriptorHandler
添加自己的配置处理程序。并在
META-INF/plexus/components.xml
中定义组件.您可以通过创建一个依赖于
maven-assembly-plugin
的上游项目来做到这一点。并包含您的自定义处理程序。可能可以在您正在组装的同一个项目中执行此操作,但我没有尝试过。处理程序的实现可以在
org.apache.maven.plugin.assembly.filter.*
中找到。汇编源代码包。
package com.mycompany;
import org.apache.maven.plugin.assembly.filter.ContainerDescriptorHandler;
public class CustomHandler implements ContainerDescriptorHandler {
// body not shown
}
/src/main/resources/META-INF/plexus/components.xml
中定义组件
<?xml version='1.0' encoding='UTF-8'?>
<component-set>
<components>
<component>
<role>org.apache.maven.plugin.assembly.filter.ContainerDescriptorHandler</role>
<role-hint>custom-handler</role-hint>
<implementation>com.mycompany.CustomHandler</implementation>
<instantiation-strategy>per-lookup</instantiation-strategy>
</component>
</components>
</component-set>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2.1</version>
<configuration>
<descriptors>
<descriptor>...</descriptor>
</descriptors>
</configuration>
<dependencies>
<dependency>
<groupId>com.mycompany</groupId>
<artifactId>sample-handler</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
</plugin>
...
<containerDescriptorHandler>
<handlerName>custom-handler</handlerName>
</containerDescriptorHandler>
...
关于maven-2 - 如何在 Maven 程序集中合并资源文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1607220/
我是一名优秀的程序员,十分优秀!