Author:
nice01qc
Time :
Time :
Maven项目管理
简单地总结Maven的使用…
maven 一些常用命令
- mvn clean : 清理target文件
- mvn clean compile : 清理后编译,会见到编译后出现的target文件
- mvn test : 清理 后测试
- mvn clean package : 运行清理和打包
- mvn clean install : 运行清理并打包,然后会安装到本地仓库里
- mvn clean deploy : 运行清理 和 发布(发布到私服上面)
创建项目架构:
mvn archetype:generate # 生成项目
pom.xml
<!--覆盖中央仓库地址-->
<repositories>
<repository>
<id>central</id>
<name>Central Repository</name>
<url>https://nexus.sourcesense.com/nexus/content/repositories/pulbic//</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<!-- exclusive 排除不想要的依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
<exclusions>
<!-- 排除不想要的那个 -->
<exclusion>
<artifactId>log4j</artifactId>
<groupId>log4j</groupId>
</exclusion>
</exclusions>
</dependency>
maven 依赖:
- A依赖C; B依赖A;=> B也依赖C (这种依赖是基于compile这个范围进行传递的,没有写<scope></scope>这个标签默认是compile)
- A依赖C的1.0版本;B依赖C的1.1版本; D依赖A和B;=> D会依赖最先加入的C的版本,例如先加入A,则D依赖于C的1.0版本
- 如果需要精确控制需要的依赖包,可以通过exclusion标签来排除不想要的,当然可以自己加入那个jar包,因为路径最短原则,覆盖了其他的
- test:测试范围有效,在编译和打包时都不会使用这个依赖
- compile:编译范围有效,在编译和打包时都会将依赖存储进去
- provided: 在编译和测试过程有效,最后生成war包时不会加入
- runtime: 在运行的时候依赖,在编译的时候不依赖
maven多个项目聚合问题
只需要一个pom.xml文件就好了
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>nice01qc</groupId>
<artifactId>polymerize</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- packaging 设置为pom -->
<packaging>pom</packaging>
<!-- 加入需要被聚合的项目 -->
<modules>
<module>project-1</module>
<module>project-2</module>
<module>project-3</module>
...
</modules>
</project>
设置父类,让子类都去继承
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>nice01qc</groupId>
<artifactId>parent</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- packaging 设置为pom -->
<packaging>pom</packaging>
<!-- 此处可以加入那些那些被重复写到的内容 ps: -->
<repositories>
<repository>
<id>...</id>
<name>等等...</name>
</repository>
</repositories>
<properties>
<spring-version>4.3.1.release</spring-version>
</properties>
<!-- 关于依赖继承,子类需要什么继承什么就好了,可以简化子类 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
子类:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>nice01qc</groupId>
<artifactId>children1</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<!-- 继承父类 -->
<parent>
<groupId>nice01qc</groupId>
<artifactId>parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<!-- 是不是简化了很多,不用管版本号什么的了,都集中管理 -->
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
</dependencies>
</project>