maven-jar-plugin

该插件可以把程序打成一个可运行的jar包.该插件有两个插件目标:jar:jar插件目标、jar:test-jar 插件目标.

jar:jar插件目标

用于从当前项目构建一个JAR.该插件绑定到了package生命周期阶段.

必选元素

  • <classesDirectory> 包含应打包到JAR中的类和资源文件的目录.不显示指定则使用默认值:${project.build.outputDirectory} property的值
  • <outputDirectory> 指定生成jar的目录.不显示指定则使用默认值:${project.build.directory} property的值.

可选元素

  • <archive> 要使用的打包配置.
  • <classifier> 要添加到生成的工件的 classifier.如果给定,工件将作为补充工件附加.如果没有给出,将创建作为默认行为的主工件.
  • <includes> 要包含的文件列表.
  • <exclude> 要排除的文件序列.
  • <forceCreation> 要求该插件构建一个新的JAR包,即使内容似乎没有任何变化.从3.0.0开始,该属性已从jar.forceCreation重命名为maven.jar.forceCreation.
  • <outpputTimestamp> 可重复输出存档项的时间戳.
  • <skipIfEmpty> 跳过创建空存档,默认为false.

jar:test-jar插件目标

用于从当前项目构建一个JAR.该插件绑定到了package生命周期阶段.
必选元素

  • <testClassesDirectory> 包含应打包到JAR中的类和资源文件的目录.不显示指定则使用默认值:${project.build.testOutputDirectory} property的值
  • <outputDirectory> 指定生成jar的目录.不显示指定则使用默认值:${project.build.directory} property的值.

可选元素
同jar:jar

Maven Archiver

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <archive>
                        <!-- 创建的归档文件是否包含以下pom.xml 和pom.properties Maven 文件,默认是true -->
                        <addMavenDescriptor/>
                        <!-- 是否对存档进行压缩。默认值为 true -->
                        <compress/>
                        <!-- 是否强制重新创建存档。
                            将此选项设置为 false(默认值为 true)意味着将所包含文件的时间戳与目标存档的时间戳进行比较,并重建存档,
                            前提是后者的时间戳小于前者的时间戳。检查时间戳通常会带来性能提升
                            (特别是,如果构建中的以下步骤被抑制,如果没有重新创建归档文件),
                            代价是您会不时得到不准确的结果。特别是,不会检测到源文件的删除。
                            归档程序不一定支持检查最新版本。如果是这样,将此选项设置为 true 将被忽略。-->
                        <forced/>
                        <!-- 创建的存档文件是否包含 INDEX.LIST 文件。默认值为 false -->
                        <index/>
                        <!--  使用此选项覆盖自动创建的 pom.properties 文件(仅当 addMavenDescriptor 设置为 true 时) -->
                        <pomPropertiesFile/>
                        <!-- 提供自己的清单文件 -->
                        <manifestFile/>
                        <!--                        -->
                        <manifest>
                            <!-- 是否创建 Class-Path 清单条目。默认值为 false-->
                            <addClasspath/>
                            <!-- 如果为true,清单将包含以下条目:
                                Created-By: Maven Archiver ${maven-archiver.version}
                                Build-Jdk-Spec: ${java.specification.version}
                             -->
                            <addDefaultEntries/>
                            <!-- 如果为true,清单将包含以下条目:
                                Implementation-Title: ${project.name}
                                Implementation-Version: ${project.version}
                                Implementation-Vendor: ${project.organization.name}
                            -->
                            <addDefaultImplementationEntries/>
                            <!-- 如果为true,清单将包含以下条目:
                                Specification-Title: ${project.name}
                                Specification-Version: ${project.artifact.selectedVersion.majorVersion}.${project.artifact.selectedVersion.minorVersion}
                                Specification-Vendor: ${project.organization.name}
                            -->
                            <addDefaultSpecificationEntries/>
                            <!-- 如果为true,清单将包含以下条目:
                                Build-Tool: ${maven.build.version}
                                Build-Jdk: ${java.version} (${java.vendor})
                                Build-Os:  ${os.name} (${os.version}; (${os.arch})
                            -->
                            <addBuildEnvironmentEntries/>
                            <!-- 是否创建 Extension-List 清单条目。默认值为 false -->
                            <addExtensions/>
                            <!-- 在所创建的 Class-Path 中格式化条目时要使用的布局类型。
                                有效值包括:simple、repository(与Maven类路径布局相同)和 custom。
                                注意:如果指定 custom 的类型,还必须设置 customClasspathLayout。默认值为 simple
                            -->
                            <classpathLayoutType/>
                            <!-- 将作为所有 Class-Path 项前缀的文本。默认值为空字符串 “”-->
                            <classpathPrefix/>
                            <!-- 在 classpathLayoutType 中设置的布局类型值为 custom 时使用的布局表达式。表达式将根据类路径相关对象的以下有序列表进行计算:
                                当前 Artifact 实例(如果存在)。
                                来自上述 Artifact 的当前 ArtifactHandler 实例。
                                注意:如果指定 custom 布局类型,则必须设置该布局表达式
                            -->
                            <customClasspathLayout/>
                            <!-- Main-Class 清单项-->
                            <mainClass/>
                            <!-- 名为 Package 清单条目-->
                            <packageName/>
                            <!-- 是否使用唯一的时间戳快照版本而不是 -SNAPSHOT。默认值为 true-->
                            <useUniqueVersions/>
                        </manifest>
                        <!-- 要添加到清单的键/值对的列表 -->
                        <manifestEntries>
                            <key>value</key>
                        </manifestEntries>
                        <manifestSections>
                            <manifestSection>
                                <!-- 节的名称-->
                                <name/>
                                <!-- 要添加到清单的键/值对的列表。java.util.Map 类型-->
                                <manifestEntries>
                                    <key>value</key>
                                </manifestEntries>
                            </manifestSection>
                        </manifestSections>
                    </archive>
                </configuration>
            </plugin>