0

我需要将 MainClass 添加到由 maven 生成的 jar 中的清单文件中。在 SO 和 else-where 上搜索显示了几个选项 - 其中 2 个是

方法 1:添加到 maven-compiler-plugin

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.0.2</version>
    <configuration>
      <source>1.5</source>
      <target>1.5</target>
      <archive>
        <manifest>
        <mainClass>com.mypackage.myMainClass</mainClass>
        <!--addClasspath>false</addClasspath-->
        </manifest>
        <manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
      </archive>
    </configuration>
</plugin>

方法 2:使用 maven-assembly-plugin

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
        <archive>
            <manifest>
                <mainClass>foo.bar.Main</mainClass>
            </manifest>
        </archive>
    </configuration>
</plugin>

如果您检查,清单类配置/指令在<archive>标签下。

我的问题是为什么它在<archive>标签下?我不明白标签的命名约定/相关性。我们没有在这里存档任何东西。

4

2 回答 2

0

快速回答,因为 maven-assembly-plugin 的开发人员希望这样。有一些解释: maven-assembly-plugin 旨在从您的 maven 项目创建单个可分发档案。所以输出称为存档。“jar-with-dependencies”是这个插件的一个特殊描述符,用于构建可运行的 jar(Java 存档)文件,并将所有依赖项打包到其中。对于插件,这仍然是一个存档。因此,当您想将带有 mainClass 的清单添加到存档时,您可以在存档标记中执行此操作。

于 2013-05-09T10:59:11.717 回答
0

<archive>创建某种工件方面,在您的情况下是一个 jar 文件。JAR - Java ARchive. Maven Archiver 主要被插件用来处理打包。并且您正在操纵该打包过程,将数据添加到清单文件中,该清单文件将在 jar 存档中。

于 2013-05-09T10:57:47.680 回答