问题描述
我正在为具有大量依赖项的项目着色。我需要保留原始人工制品中的所有内容,并且只包含其他项目中的类。听起来很简单吧? 唯一的问题是 groupId 到处都是,我似乎无法获得干净的配置。
<filter>
<artifact>*:*</artifact>
<includes>
<include>**/*.class</include>
</includes>
</filter>
<filter>
<artifact>${project.groupId}:${project.artifactId}</artifact>
<includes>
<include>**</include>
</includes>
</filter>
这显然是行不通的,因为每个过滤器只保留它过滤的东西,所以原始人工制品中的资源丢失了。
我不想为每个工件添加过滤器。太多了,为什么我要一遍又一遍地重复依赖项标签。我也不想挑选要从依赖项中排除的资源,因为我并不总是知道它们是什么,而且我不想在这里维护对它们的更改(尽管这是路线我暂时离开了)。
artifactSet 没有帮助,因为它只包含或排除了工件,而 DontIncludeResourceTransformer 也没有帮助,因为它作用于最终过滤的资源集。
允许过滤器位于 artefactSet 中可能是值得的:
<artifactSet>
<includes>
<include>*:*</include>
</includes>
<filters>
<filter>
<includes>
<include>**/*.class</include>
</includes>
</filter>
</filters>
</artifactSet>
<artifactSet>
<includes>
<include>${project.groupId}:${project.artifactId}</include>
</includes>
</artifactSet>
或者,创建一个“filterSet”标签,将过滤操作分支并在最后重新组合资源:
<filters>
<filterSet>
<filter>
<artifact>*:*</artifact>
<includes>
<include>**/*.class</include>
</includes>
</filter>
</filterSet>
<filterSet>
<filter>
<artifact>${project.groupId}:${project.artifactId}</artifact>
<includes>
<include>**</include>
</includes>
</filter>
</filterSet>
</filters>
或者,在过滤器中添加一个布尔值“branch/preserve/pin”标签:
<filter>
<artifact>*:*</artifact>
<includes>
<include>**/*.class</include>
</includes>
</filter>
<filter>
<artifact>${project.groupId}:${project.artifactId}</artifact>
<preserve>true</preserve>
</filter>
我也看到了
从 1.6 版开始,minimizeJar 将尊重 专门标记为包含在过滤器中。
但我仍然想根据实际需要改进最终的类集。所以包含 **/*.class 的过滤器已经失效,因为没有配置minimizeJar 行为的开关。
看起来 maven-assembly-plugin 帮不上忙,所以我不得不这样做并希望最好
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>**/*.sql</exclude>
<exclude>**/*.xsd</exclude>
<exclude>**/*.json</exclude>
<exclude>**/*.bat</exclude>
<exclude>**/*.dll</exclude>
<exclude>**/*.lib</exclude>
<exclude>**/*.properties</exclude>
<exclude>**/*.exclude</exclude>
...
</excludes>
</filter>
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)