我正在尝试使用maven-shade-plugin生成 Uber Jar ,并且我想从阴影 jar 中排除一些资源并包含一些指定的工件。但是以下排除资源与其捆绑在一起。
<dependencies>
<dependency>
<groupId>com.sample.auto</groupId>
<artifactId>sample</artifactId>
<version>1.5.0</version>
</dependency>
<dependency>
<groupId>com.sample.manual</groupId>
<artifactId>sample-manual</artifactId>
<version>1.5.0</version>
</dependency>
</dependencies>
<profiles>
<profile>
<id>Distribute</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
</transformer>
</transformers>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
<exclude>META-INF/LICENSE</exclude>
<exclude>LICENSE</exclude>
<exclude>com/myproject/auto/**</exclude>
<exclude>org/**</exclude>
<exclude>/*.png</exclude>
<exclude>/*.html</exclude>
<exclude>/*.jpeg</exclude>
<exclude>com/google/common/**</exclude>
</excludes>
</filter>
</filters>
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>jar-with-dependencies</shadedClassifierName>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
Run Code Online (Sandbox Code Playgroud)
另外,我只需要将com.sample.auto相关工件包含到我的 uber jar 中。请让我知道我在哪里犯了错误。
理想情况下,在查看代码时对工件的过滤器应该是:
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
<exclude>META-INF/LICENSE</exclude>
<exclude>LICENSE</exclude> <!--if this is same as above, not required-->
<exclude>/*.png</exclude>
<exclude>/*.html</exclude>
<exclude>/*.jpeg</exclude>
<exclude>com.myproject.auto:**</exclude> <!--to exclude all the artifacts from com.myproject.auto group-->
<exclude>org:**</exclude><!--exclude all artifacts under group org-->
<exclude>com.google.common:**</exclude>
</excludes>
</filter>
</filters>
Run Code Online (Sandbox Code Playgroud)
或者,如果您希望细粒度依赖工件中的类,那么您可以应用多个过滤器,例如
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
<exclude>META-INF/LICENSE</exclude>
<exclude>LICENSE</exclude> <!--if this is same as above, not required-->
<exclude>/*.png</exclude>
<exclude>/*.html</exclude>
<exclude>/*.jpeg</exclude>
</excludes>
</filter>
<filter>
<artifact>com.myproject.auto:*<artifact>
<excludes>
<exclude>com/myproject/auto/**</exclude> <!--to exclude a set of classes from the project structure-->
</excludes>
</filter>
<filter>
<artifact>org:*<artifact>
<excludes>
<exclude>org/**</exclude> <!--though the artifact naming needs to be refined for this-->
</excludes>
</filter>
<filter>
<artifact>com.google.common:**<artifact>
<excludes>
<exclude>com/google/common/**</exclude> <!--exclude classes from the respective artifacts-->
</excludes>
</filter>
</filters>
Run Code Online (Sandbox Code Playgroud)
您自己链接的 Apache 文档上有非常有用的排除-包含配置示例。
| 归档时间: |
|
| 查看次数: |
13077 次 |
| 最近记录: |