1.pom文件中${project.basedir}
${project.basedir}
的值是maven自带的,不是配置的。它默认是pom文件的上一级。
2.pom文件中pakaging 打包类型
<package>pom</package>
默认是jar,父模块需显示指定为pom,子(部署)模块按需指定为war或jar
3. modules
作为父级项目,还有一个重要的属性,那就是modules,通过modules标签将项目的所有子项目引用进来,在build父级项目时,会根据子模块的相互依赖关系整理一个build顺序,然后依次build。
4.例子:建立一个maven项目,项目根目录pom.xml
<project>
<!--maven仓库地址手动配置,默认是找中央仓库下载依赖外网比较慢,一般会在setting.xml中配置一些快速下载的仓库比如华为、阿里的仓库、如果公司有自己的仓库在内网就配置自己的仓库,也可以在pom直接指定仓库位置-->
<!--定义snapshots库和releases库的nexus地址,使得pom既可以从上面拉取依赖,也可以打包发布到对应的公司级仓库供其他人员拉取-->
<distributionManagement>
<repository>
<id>nexus-releases</id>
<url>
http://172.17.103.59:8081/nexus/content/repositories/releases/
</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<url>
http://172.17.103.59:8081/nexus/content/repositories/snapshots/
</url>
</snapshotRepository>
</distributionManagement>
注意:如果你的镜像服务器需要用户名和密码,那么还需要在maven的settings.xml文件中做如下配置:
<server>
<id>nexus-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>nexus-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
<parent>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-starter-parent</artifactid>
<version>2.2.7-RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupid>com.unis.dts</groupid>
<artifactid>dae</artifactid>
<!--SNAPSHOT:快照,未开发完成的项目,开发过程中的不稳定版本;RELEASE:已经开发完成的项目-->
<version>${revision}</version>
<package>pom</package>
<!--包含的子模块-->
<modules>
<module>dae-server</module>
</modules>
<!--所有模块依赖包的版本号配置->
<properties>
<revision>1.0.0-SNAPSHOT</revision>
<lombok.version>1.16.22</lombok.version>
</properties>
<!--依赖管理-->
在dependencyManagement元素中声明所依赖的jar包的版本号等信息,那么所有子项目再次引入此依赖jar包时则无需显式的列出版本号。Maven会沿着父子层级向上寻找拥有dependencyManagement 元素的项目,然后使用它指定的版本号。
注意:
dependencyManagement中定义的只是依赖的声明,并不实现引入,因此子项目需要显式的声明需要用的依赖。
另外父模块也不允许引入依赖,原因是虽然子模块可以继承依赖但是如果某个子模块不需要父模块其中的几个依赖,打包时还是会打进去,造成打出的包比正常情况要大。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<!--编译打包插件配置-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
5.子模块继承父模块pom.xml
<parent>
<groupid>com.unis.dts</groupid>
<artifactid>dae</artifactid>
<version>${revision}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactid>dae-server</artifactid>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}-V${project.modelVersion}</finalName><!--可选,默认以artifactId作为包名-->
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
附使用Maven插件构建Docker镜像
https://www.cnblogs.com/guoyinghome/p/11220317.html