maven - 帮助我理解标签命名的相关性

时间:2013-05-09 10:51:48

标签: maven naming-conventions

我需要将一个MainClass添加到由maven生成的jar中的manifest文件中。搜索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>标签下?我不明白标签的命名约定/相关性。我们在这里没有存档。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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