maven 学习之 pom.xml

上图是本身的工程目录结构。html

只要在父pom中,配置 module 属性后,而且在子模块的 pom 中声明 parent 属性便可。java

<parent>
    <artifactId>maven-learn</artifactId>
    <groupId>com.lxh.learn</groupId>
    <version>1.0-SNAPSHOT</version>
</parent>
复制代码

脚本资源

因为脚本文件不属于项目文件,因此并不须要将其打到 jar 包里面,此时就须要经过配置属性将其拷贝到输出目录,即jar包外面。apache

<build>
    <scriptSourceDirectory>./bin/hello.sh</scriptSourceDirectory>
</build>
复制代码

打包插件

maven 提供了各类各样的插件,能够方便咱们的构建工做,因此每当咱们须要将项目的构建自动化时,便可以利用maven插件属性,免去重复造轮子的麻烦。插件介绍在maven官网中有详细说明,此处介绍几个本身经常使用的特性:maven

maven.apache.org/plugins/ind…ui

不把某些包的内容打到 jar 包里

此时须要用到 maven-jar-plugin 插件,这个插件专门用来打包。项目结构如图:搜索引擎

若是我不想把 exclude 目录中的类打到jar包中,则可使用以下配置方式:spa

对jar包进行反编译能够看到,Test 这个类不在jar包中:

主清单属性

咱们在使用 java -jar 命令执行 jar 包时,有时候会遇到错误提示:没有指定主清单属性。插件

这是为何呢?code

原来在每一个打好的 jar 包中,都有一个叫 MANIFEST.MF 的文件。这个文件有什么用处呢?orm

主要是指定了一些与 jar 包相关的属性,如图所示:

而若是咱们想执行一个可执行的 jar 包,则必须指定主类名称,如图所示:

怎么指定?仍是经过对一个插件的配置来实现。

maven-shade-plguin,经过 maven-shade-plugin 生成一个 uber-jar,它包含全部的依赖 jar 包。在打包阶段绑定,用来建立一个 shaded jar 包,此 jar 包会把全部依赖的包打进来。

此插件提供了不少的 transforme,其中的一个ManifestResourceTransformer 用来操做 MANIFEST.MF ,并在文件中添加 entry 。

其余 transformer 介绍能够参考官网文档。

总结

了解一门技术,之前喜欢用搜索引擎,如今愈来愈以为仍是官网的第一手资料最靠谱,比搜索引擎更有效率。

相关文章
相关标签/搜索