全名:
org.apache.maven.plugins:maven-shade-plugin:3.2.4:shade
说明:
属性:
姓名 | 类型 | 自从 | 描述 |
---|---|---|---|
<工件集> | 工件集 | - | 从最终工件中包含/排除的工件。工件由通用形式
groupId:artifactId:type:classifier的复合标识符表示。从 1.3 版开始,通配符 '*' 和 '?' 可以在这些复合标识符的子部分中使用以进行模式匹配。为方便起见,语法groupId等价于
groupId:*:*:*,groupId:artifactId等价于groupId:artifactId:*:*和
groupId:artifactId:classifier等价于
groupId:artifactId:*:classifier。例如:
<artifactSet> <includes> <include>org.apache.maven:*</include> </includes> <excludes> <exclude>*:maven-core</exclude> </excludes> </artifactSet> |
<createDependencyReducedPom> | 布尔值 | - | 标记是否为着色工件生成简化的 POM。如果设置为true,则已包含在 uber JAR 中的依赖项将从生成的 POM 的
<dependencies>部分中删除。精简后的 POM 将被命名为dependency-reduced-pom.xml
并存储在与阴影工件相同的目录中。除非您还指定了dependencyReducedPomLocation,否则插件将在项目 basedir 中创建一个名为
dependency-reduced-pom.xml的临时文件。 默认值为:true。 |
<createSourcesJar> | 布尔值 | - | 当为 true 时,它也会尝试创建一个源 jar |
<createTestSourcesJar> | 布尔值 | - | 如果为 true,它将尝试创建一个测试源 jar。 |
<dependencyReducedPomLocation> | 文件 | 1.7 | 在哪里放置依赖减少的pom。注意:使用 ${basedir} 以外的目录设置此参数的值将更改阴影执行之后的所有执行的 ${basedir} 的值。这通常不是您想要的。这被认为是此插件的一个未解决问题。 默认值为:${basedir}/dependency-reduced-pom.xml。 |
<过滤器> | 存档过滤器[] | - | 要使用的存档过滤器。允许您以 artifactSet 使用的复合标识符的形式指定一个工件,
以及一组包含/排除文件模式,用于过滤将归档的哪些内容添加到阴影 jar 中。从逻辑的角度来看,包含在排除之前处理,因此可以使用包含从存档中收集一组文件,然后使用排除进一步减少该集合。默认情况下,包含所有文件,不排除任何文件。如果多个过滤器应用于一个工件,则匹配文件的交集将包含在最终 JAR 中。例如:
<filters> <filter> <artifact>junit:junit</artifact> <includes> <include>org/junit/**</include> </includes> <excludes> <exclude>org/junit/experimental/**</exclude> </excludes> </filter> </filters> |
<最终名称> | 细绳 | - | 阴影 artifactId 的名称。如果您想更改本机工件的名称,您可以使用 <build><finalName> 设置。如果将其设置为不同于 <build><finalName> 的值,则不会执行文件替换,即使正在使用 shadedArtifactAttached。 |
<generateUniqueDependencyReducedPom> | 布尔值 | 1.7.2 | 在 ${basedir}/drp-UNIQUE.pom 中创建一个减少依赖的 POM。这避免了并行构建的构建冲突,而无需将依赖减少的 POM 移动到不同的目录。属性 maven.shade.dependency-reduced-pom 设置为生成的文件名。 默认值为:false。 |
<keepDependenciesWithProvidedScope> | 布尔值 | - | 如果为 true,则依赖项保留在 pom 中,但范围为“已提供”;如果为 false,则删除依赖项。 |
<minimizeJar> | 布尔值 | 1.4 | 当为 true 时,依赖项将在类级别上被剥离为仅工件所需的传递外壳。注意:
使用此功能需要 Java 1.5 或更高版本。 |
<输出目录> | 文件 | - | 着色工件的目标目录。 默认值为:${project.build.directory}。 |
<输出文件> | 文件 | 1.3 | 着色工件的输出文件的路径。设置此参数后,创建的存档既不会替换项目的主要工件,也不会附加。因此,此参数会导致参数finalName、
shadedArtifactAttached、
shadedClassifierName和
createDependencyReducedPom在使用时被忽略。 |
<promoteTransitiveDependencies> | 布尔值 | - | 当为真时,移除依赖的传递依赖被提升为直接依赖。这应该允许用新的阴影 jar 替换已删除的 deps,并且一切都应该仍然有效。 |
<搬迁> | 包重定位[] | - | 要搬迁的包裹。例如:
<relocations> <relocation> <pattern>org.apache</pattern> <shadedPattern>hidden.org.apache</shadedPattern> <includes> <include>org.apache.maven.*</include> </includes> <excludes> <exclude>org.apache.maven.Public*</exclude> </excludes> </relocation> </relocations> |
<shadeSources 内容> | 布尔值 | - | 如果为 true,它将在创建源 jar 时尝试隐藏 java 源文件的内容。当为 false 时,它只会将 java 源文件重新定位到阴影路径,但不会修改 java 源文件的实际内容。 默认值为:false。 用户属性是:shadeSourcesContent。 |
<shadeTestJar> | 布尔值 | - | 当为 true 时,也会创建一个带阴影的 test-jar 工件。 默认值为:false。 |
<shadedArtifactAttached> | 布尔值 | - | 定义是否应将着色工件作为分类器附加到原始工件。如果为 false,阴影 jar 将是项目的主要工件 |
<shadedArtifactId> | 细绳 | - | 阴影 artifactId 的名称。因此,您可能希望使用不同的 artifactId 并保留标准版本。如果原始 artifactId 是“foo”,那么最终的 artifact 将类似于 foo-1.0.jar。因此,如果您更改 artifactId,您可能会得到类似 foo-special-1.0.jar 的内容。 默认值为:${project.artifactId}。 |
<shadedClassifierName> | 细绳 | - | 在附加阴影工件的情况下使用的分类器的名称。 默认值为:阴影。 |
<shadedGroupFilter> | 细绳 | - | 如果指定,这将仅包括具有以 this 开头的 groupIds 的工件。 |
<着色器提示> | 细绳 | 1.6 | 您可以在此处传递有关您自己的 Shader 实现丛组件的 roleHint。 |
<变压器> | 资源转换器[] | - | 要使用的资源转换器。有关可用变压器及其配置的更多信息,请参阅“示例”部分。 |
<使用基础版本> | 布尔值 | 3.0 | 当为 true 时,减少的 pom 的每个依赖项的版本将基于原始依赖项的 baseVersion 而不是其解析版本。例如,如果原始 pom(传递地)依赖于 a:a:2.7-SNAPSHOT,如果 useBaseVersion 设置为 false,则减少的 pom 将依赖于 a:a:2.7-20130312.222222-12 而如果 useBaseVersion 设置为 true,减少的 pom 将取决于 a:a:2.7-SNAPSHOT 默认值为:false。 |
<artifactSet> <includes> <include>org.apache.maven:*</include> </includes> <excludes> <exclude>*:maven-core</exclude> </excludes> </artifactSet>
<filters> <filter> <artifact>junit:junit</artifact> <includes> <include>org/junit/**</include> </includes> <excludes> <exclude>org/junit/experimental/**</exclude> </excludes> </filter> </filters>
<relocations> <relocation> <pattern>org.apache</pattern> <shadedPattern>hidden.org.apache</shadedPattern> <includes> <include>org.apache.maven.*</include> </includes> <excludes> <exclude>org.apache.maven.Public*</exclude> </excludes> </relocation> </relocations>