[英]How to add DefaultImplementationEntries to MANIFEST when using maven-shade-plugin?
找到這個關於如何向 manifest.mf 添加版本的問題: 如何使用 Maven 將實現版本值添加到 jar 清單? ,但是在使用 shade 插件時如何添加它們?
我在我的 pom.xml maven-shade-plugin 中嘗試了什么:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<finalName>ispf-win</finalName>
<shadedArtifactAttached>shade</shadedArtifactAttached>
<outputDirectory>${project.build.directory}/ispf-win</outputDirectory>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>desktop.win.main.Main</mainClass>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
</manifest>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
但是我可能會出錯:
Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:3.2.4:shade (default) on project desktop.win:
Unable to parse configuration of mojo org.apache.maven.plugins:maven-shade-plugin:3.2.4:shade for parameter addDefaultI
mplementationEntries: Cannot find 'addDefaultImplementationEntries' in class java.util.jar.Manifest
我認為你應該更願意使用<manifestEntries>
看這個例子: 這個
使用這些標准 maven 屬性集:
<name>Project Name</name>
<organization.name>Company</organization.name>
<groupId>Group ID</groupId>
<version>1.0.0</version>
以及以下maven燈罩配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<!-- Add entries to the manifest. -->
<transformer implementation = "org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<manifestEntries>
<Implementation-Title>${project.name}</Implementation-Title>
<Implementation-Version>${project.version}</Implementation-Version>
<Implementation-Vendor-Id>${project.groupId}</Implementation-Vendor-Id>
<Implementation-Vendor>${project.organization.name}</Implementation-Vendor>
</manifestEntries>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
你會得到想要的結果:
Manifest-Version: 1.0
Created-By: Maven Jar Plugin 3.2.0
Build-Jdk-Spec: 11
Implementation-Title: Project Name
Implementation-Vendor: Company
Implementation-Vendor-Id: Group ID
Implementation-Version: 1.0.0
對於多模塊項目中的“設置並忘記它”配置,請在父 pom <properties>
部分中設置<organization.name>
,在每個模塊 pom.xml 中設置<name>
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.