网站上线倒计时页面,商业策划书范文6篇,wordpress 插件安装在哪个文件夹,全国公共资源交易中心文章目录 前言一、使用方式二、常用配置详解1.classesDirectory2.outputDirectory3.excludes4.includes5.archive添加Implementation和Specification属性添加manifestEntries添加键值对属性Manifest Sections自定义manifest配置设置一个可执行的jar文件精确设置Classpath根据目… 文章目录 前言一、使用方式二、常用配置详解1.classesDirectory2.outputDirectory3.excludes4.includes5.archive添加Implementation和Specification属性添加manifestEntries添加键值对属性Manifest Sections自定义manifest配置设置一个可执行的jar文件精确设置Classpath根据目录设置classpath配置classpath的加载样式强制使用SNAPSHOT版本的依赖 加载外部的manifest文件 总结 前言
maven-jar-plugin插件时maven中最常用的插件也是maven构建Java程序执行包或者依赖包的默认插件大部分情况下我们不需要对其进行配置但在特殊情况下我们可以通过配置来定制我们的jar包。 一、使用方式
大部分情况下我们的配置如下
plugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-jar-plugin/artifactIdversion2.4/version
/plugin而且这里的版本号是可选的如果不配置版本号maven会自动去寻找最新的版本。
二、常用配置详解
1.classesDirectory
这个表示class文件的目录默认值是${project.build.outputDirectory}也就是target目录下的class目录当然我们也可以指定其他目录。
2.outputDirectory
表示jar文件的输出目录默认值是${project.build.directory}就是target目录生成的jar文件就输出到这里。
3.excludes
表示jar文件打包时需要排除哪些文件比如我们在开发时有个dev.properties文件打包时我们就不需要了可以这样配置
plugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-jar-plugin/artifactIdversion2.4/versionconfigurationexcludesexcludeconf/**/excludeexcludebin/**/excludeexcludecache/**/excludeexcludeattachment/**/excludeexcludedev.properties/exclude/excludes/configuration
/plugin这里我们排除了部分文件夹和开发时用到的文件在打包时不加入到jar文件中。
4.includes
这个与excludes相反就是把需要的文件在打包时加入到jar文件中具体配置可以参照excludes的配置。
5.archive
这个属性配置很多主要是用于定制化我们的jar包结构以及对Manifest文件的定制化。下面我们用几个实例来演示。
添加Implementation和Specification属性
默认情况下面Manifest文件结构如下
Manifest-Version: 1.0
Created-By: Apache Maven ${maven.version}
Build-Jdk: ${java.version}我们可配置下面属性
plugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-jar-plugin/artifactIdversion2.4/versionconfigurationarchivemanifestaddDefaultImplementationEntriestrue/addDefaultImplementationEntriesaddDefaultSpecificationEntriestrue/addDefaultSpecificationEntries/manifest/archive/configuration
/plugin这样生成的Manifest如下
Manifest-Version: 1.0
Created-By: Apache Maven ${maven.version}
Build-Jdk: ${java.version}
Specification-Title: ${project.name}
Specification-Version: ${project.artifact.selectedVersion.majorVersion}.${project.artifact.selectedVersion.minorVersion}
Specification-Vendor: ${project.organization.name}
Implementation-Title: ${project.name}
Implementation-Version: ${project.version}
Implementation-Vendor: ${project.organization.name}添加manifestEntries
这个属性可以添加一下项目信息到jar文件中。常用配置如下
configurationarchivemanifestEntriesmodeprod/modeurl${project.url}/url/manifestEntries/archive
/configuration生成的Manifest如下
Manifest-Version: 1.0
Created-By: Apache Maven ${maven.version}
Build-Jdk: ${java.version}
mode: prod
url: http://project.url.com添加键值对属性Manifest Sections
这个功能可以添加多个键值属性配置如下
archivemanifestSectionsmanifestSectionnamevalue1/namemanifestEntriesidkey1/id/manifestEntries/manifestSectionmanifestSectionnamevalue2/namemanifestEntriesidkey2/id/manifestEntries/manifestSection/manifestSections
/archive结果如下
Manifest-Version: 1.0
Created-By: Apache Maven ${maven.version}
Build-Jdk: ${java.version}Name: value1
id: key1Name: value2
id: key2自定义manifest配置
可以根据下面的配置来定制化manifest文件的加载机制
设置一个可执行的jar文件
我们可以发布一个可执行的jar文件就是可以通过命令行来启动一个jar。也可以把一个jar文件当做依赖库提供给其他项目来使用。如果要发布一个可执行的jar配置如下
configurationarchivemanifestmainClasscom.test.Main/mainClass/manifest/archive
/configuration这里com.test.Main必须要有一个main方法 精确设置Classpath
就是将所有的jar文件全部枚举出来配置如下
projectbuildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-jar-plugin/artifactIdconfigurationarchivemanifestaddClasspathtrue/addClasspath/manifest/archive/configuration/plugin/plugins/builddependenciesdependencygroupIdcommons-lang/groupIdartifactIdcommons-lang/artifactIdversion2.1/version/dependencydependencygroupIdcommons-io/groupIdartifactIdcommons-io/artifactIdversion2.11.0/version/dependency/dependencies
/projectManifest生成结果如下
Manifest-Version: 1.0
Created-By: Apache Maven ${maven.version}
Build-Jdk: ${java.version}
Class-Path: commons-io-2.11.0.jar commons-lang-2.1.jar 注意这样运行这个jar文件时需要保证Class-Path的依赖jar在目录中保持平级。 根据目录设置classpath
这里需要用到属性classpathPrefix配置如下
configurationarchivemanifestaddClasspathtrue/addClasspathclasspathPrefixlib//classpathPrefix/manifest/archive
/configurationManifest生成结果如下
Class-Path: lib/commons-io-2.11.0.jar lib/commons-lang-2.1.jar注意这样运行这个jar文件时需要保证lib目录和执行jar保持平级。 配置classpath的加载样式
加载样式意思是可以通过特定的配置来配置classpath的路径配置属性是classpathLayoutType 自定义加载样式classpathLayoutTypecustom 配置如下
configurationarchivemanifestaddClasspathtrue/addClasspathclasspathLayoutTypecustom/classpathLayoutTypecustomClasspathLayoutlib/$${artifact.groupIdPath}/$${artifact.artifactId}-$${artifact.version}$${dashClassifier?}.$${artifact.extension}/customClasspathLayout/manifest/archive
/configuration接入如下
Class-Path: lib/commons-io/commons-io-2.11.0.jar lib/commons-lang/commons-lang-2.1.jar maven风格加载样式classpathLayoutTyperepository 我们也可以设置maven风格的加载样式如果目标机器上有maven库我们可以这样设置
configurationarchivemanifestaddClasspathtrue/addClasspathclasspathPrefix${user.home}/.m2/repository/classpathPrefixclasspathLayoutTyperepository/classpathLayoutType/manifest/archive
/configuration结果如下
Class-Path: ${user.home}/.m2/repository/commons-io/commons-io-2.11.0.jar ${user.home}/.m2/repository/commons-lang/commons-lang/2.1/commons-lang-2.1.jar这里的${user.home}会替换成你电脑上的绝对路径 强制使用SNAPSHOT版本的依赖
有时我们依赖的jar包可能是SNAPSHOT版本的默认情况SNAPSHOT版本的库文件是不会被加载的这里可以使用useUniqueVersions来启用配置如下
configurationarchivemanifestuseUniqueVersionsfalse/useUniqueVersions/manifest/archive
/configuration这样SNAPSHOT版本的jar依赖也会被加载。
加载外部的manifest文件
我们也可以将manifest编写好然后直接使用我们自己编写的文件配置如下
configurationarchivemanifestFilesrc/main/resources/META-INF/MANIFEST.MF/manifestFile/archive
/configuration这里就直接加载我们自己编写的MANIFEST文件。 总结
与maven-jar-plugin相同的还有一个maven-war-plugin插件用于将我们的程序打包成war格式的执行包也是maven默认的打包工具。这个主要用于web项目。它的用法和maven-jar-plugin完全一样大家可以参照上面的使用。