Bla*_*TNC 4 manifest.mf javabeans maven maven-shade-plugin
当项目使用Maven-jar-plugin时,很容易在jar中包含自定义清单文件,但是我找不到使用Maven阴影执行相同操作的方法。在使用“ Maven-shade-plugin”时如何使用自己的清单文件?
额外细节:
我的自定义清单文件位于“ src / main / resources / META-INF / MANIFEST.MF”中。Maven不包括我的文件,而是在最终的jar中将其替换为默认的Maven清单文件。
我需要一个自定义清单文件的原因是在清单中为swing组件库指定一些JavaBeans类。清单文件中应使用以下格式指定多个JavaBeans类,如此处所述。请注意,空行(和行分组)对于在清单中标记JavaBeans类很重要。
Name: SomeBean1.class
Java-Bean: True
Name: SomeBean2.class
Java-Bean: True
Name: SomeBean3.class
Java-Bean: True
尝试的解决方案列表(这些方法无效):
该代码仅在使用Maven jar插件(而非阴影)时有效。
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
      <archive>
        <manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
      </archive>
    </configuration>
  </plugin>
该链接显示 “与此处的所有示例一样,此配置可以在所有使用Maven Archiver的插件中使用,而不仅仅是本示例中的Maven-jar-plugin。” 根据该建议,我尝试了以下代码,但这也不起作用。(Maven仍用默认清单文件替换了清单文件。)
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>2.4.3</version>
        <executions>
            <execution>
                <phase>package</phase>
                <goals>
                    <goal>shade</goal>
                </goals>
                <configuration> 
                    <archive>
                        <manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
                    </archive>
                    <shadedArtifactAttached>true</shadedArtifactAttached>
                    <shadedClassifierName>core</shadedClassifierName>
                    <createDependencyReducedPom>false</createDependencyReducedPom>
                    <minimizeJar>true</minimizeJar>      
                </configuration>
            </execution>
        </executions>
    </plugin>
由于以下原因,我无法使用此处所述的阴影“ ManifestResourceTransformer” 来完成这项工作。我需要将JavaBeans类添加到清单文件中,如上文“其他详细信息”中所述。但是,如果我使用清单ManifestResourceTransformer添加清单条目,则这些条目将以不可预测的顺序(随机寻找)插入清单文件中。对于指定JavaBeans类,清单条目的顺序(行顺序)很重要。
我尝试使用IncludeResourceTransformer,但是以下代码产生以下错误:“创建阴影jar时出错:重复的条目:META-INF / MANIFEST.MF”。
                <configuration> <shadedArtifactAttached>true</shadedArtifactAttached>
                    <shadedClassifierName>core</shadedClassifierName><createDependencyReducedPom>false</createDependencyReducedPom>
                    <minimizeJar>true</minimizeJar>    
                    <transformers>
                        <transformer implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
                            <resource>META-INF/MANIFEST.MF</resource>
                            <file>src/main/resources/META-INF/MANIFEST.MF</file>
                        </transformer>
                    </transformers>  
                </configuration>
The following pom configuration allows the programmer to replace the manifest file created by Apache Maven Shade plugin, with a custom manifest file. The custom manifest file should be placed in this directory in the maven project: "src/main/resources/META-INF/MANIFEST.MF"
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>2.4.3</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        ...
                        <transformers>
                            <!-- Don't do this: Avoid adding anything that makes shade create or modify a manifest file.
                            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                <mainClass>com.mypackage.MyMainClass</mainClass>
                            </transformer>
                            -->
                            <!-- Add a transformer to exclude any other manifest files (possibly from dependencies). -->
                            <transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer">
                                <resource>MANIFEST.MF</resource>
                            </transformer>
                            <!-- Add a transformer to include your custom manifest file. -->
                            <transformer implementation="org.apache.maven.plugins.shade.resource.IncludeResourceTransformer">
                                <resource>META-INF/MANIFEST.MF</resource>
                                <file>src/main/resources/META-INF/MANIFEST.MF</file>
                            </transformer>
                        </transformers>
                    </configuration>
                </execution>
            </executions>
        </plugin>
| 归档时间: | 
 | 
| 查看次数: | 1725 次 | 
| 最近记录: |