java - 如何在编译阶段生成 MANIFEST.MF 文件

标签 java maven intellij-idea manifest manifest.mf

标准方式 - 使用 maven-jar-plugin - 仅在打包阶段生成 list 文件并直接生成 jar 文件。

我需要的是在编译阶段生成 list 并在 <target>/classes/META-INF 中可用。 .

我的目标是能够在 IntelliJ Idea 中以 Debug模式运行的项目中读取此 list 文件。 (想法解决了来自 <target>/classes 而不是来自 <target>/*.jar 的项目内 jar 依赖项 - 用于热交换目的)。

到目前为止,我所知道的唯一解决方案是在 src/main/java/resources/META-INF 中实际创建我自己的 MANIFEST.MF并让它在资源阶段被过滤+复制。但我想避免这种解决方案,我希望使用 <archive> 以标准方式生成 list 在 pom 文件中配置。

最佳答案

您可以使用 maven-bundle-plugin 来做到这一点。

   <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <version>3.3.0</version>
        <executions>
            <execution>
                <id>bundle-manifest</id>
                <phase>process-classes</phase>
                <goals>
                    <goal>manifest</goal>
                </goals>
            </execution>
        </executions>
        <configuration>
            <archive>
                <index>true</index>
                <manifest>
                    <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                    <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                </manifest>
                <manifestEntries>
                    <Implementation-URL>${project.url}</Implementation-URL>
                    <Java-Version>${java.version}</Java-Version>
                    <Java-Vendor>${java.vendor}</Java-Vendor>
                    <Os-Name>${os.name}</Os-Name>
                    <Os-Arch>${os.arch}</Os-Arch>
                    <Os-Version>${os.version}</Os-Version>
                    <Scm-Url>${project.scm.url}</Scm-Url>
                    <Scm-Connection>${project.scm.connection}</Scm-Connection>
                </manifestEntries>
            </archive>
        </configuration>
    </plugin>

关于java - 如何在编译阶段生成 MANIFEST.MF 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34674073/

相关文章:

java - 如何将 Java 嵌入到微 Controller 中?

java - 我正在尝试使用 TestNG 在 selenium 3.0.1 中启动 Firefox,但我无法做到这一点。我也使用过 setProperty

java - JRE 系统库 - 不支持的主要.次要版本 52.0

intellij-idea - 需要 IntelliJ IDEA 中的 Hello World 示例

android - 将 fabric 集成到现有项目中——如何解决 "No Android modules detected"?

maven - 如何让 Intellij 使用我的环境变量?

java - Java 的数据库迁移模式?

java - 使用 Maven 运行 spock 单元测试

java - Maven 忽略了 Cucumber 测试

java - 类路径包含多个SLF4J绑定(bind),log back-classic和log4j