maven 学习之 pom.xml

我会带着你远行 2022-10-01 05:44 136阅读 0赞

上图是自己的工程目录结构。

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

  1. <parent>
  2. <artifactId>maven-learn</artifactId>
  3. <groupId>com.lxh.learn</groupId>
  4. <version>1.0-SNAPSHOT</version>
  5. </parent>
  6. 复制代码

脚本资源

由于脚本文件不属于项目文件,所以并不需要将其打到 jar 包里面,此时就需要通过配置属性将其拷贝到输出目录,即jar包外面。

  1. <build>
  2. <scriptSourceDirectory>./bin/hello.sh</scriptSourceDirectory>
  3. </build>
  4. 复制代码

打包插件

maven 提供了各种各样的插件,可以方便我们的构建工作,所以每当我们需要将项目的构建自动化时,即可以利用maven插件属性,免去重复造轮子的麻烦。插件介绍在maven官网中有详细说明,此处介绍几个自己常用的特性:

maven.apache.org/plugins/ind…

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

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

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

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

主清单属性

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

这是为什么呢?

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

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

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

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

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

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

其他 transformer 介绍可以参考官网文档。

总结

了解一门技术,以前喜欢用搜索引擎,现在越来越觉得还是官网的第一手资料最靠谱,比搜索引擎更有效率。

转载于:https://juejin.im/post/5cc3ffbce51d456e747c53b5

发表评论

表情:
评论列表 (有 0 条评论,136人围观)

还没有评论,来说两句吧...

相关阅读