0%

Maven

Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project’s build, reporting and documentation from a central piece of information.

镜像和库

参考地址

Maven仓库理解和优先级

Settings Reference

POM Reference

Using Mirrors for Repositories

Introduction to Repositories

Repository Manager

使用镜像的理由

  1. 加速拉取
  2. 使用自己的库
  3. 私服需要

mirrorOf的使用

镜像是为一个或一组特定的仓库服务的

Examples:

  • * = everything
  • external:* = everything not on the localhost and not file based.
  • repo,repo1 = repo or repo1
  • *,!repo1 = everything except repo1

*号一般是公司私服仓库组使用比较好,如果配置多个镜像,maven会先精确匹配,再根据通配符匹配优先声明的

repository的使用

maven 仓库的优先级:本地仓库 > 私服(profile)> 远程仓库(repository)

  1. 当项目声明一个本地存储库中不存在的依赖项(或者对于 SNAPSHOT,当远程存储库包含一个更新的存储库时),远程下载就会被触发, 默认情况下,Maven 将从中央存储库下载。

  2. 个性化的库最好在项目里的pom.xml里指定。

公共代理库(镜像)

阿里云

maven手动安装jar包

1
mvn install:install-file -DgroupId= -DartifactId= -Dversion= -Dpackaging=jar -Dfile=

插件

assembly

自定义打包的范围,常见于一个运行主模块带其它依赖模块一起打包,方便部署

基本配置:

其中descriptorRef是关键,可自行配置,它决定了如何装配你的程序集

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<project>
[...]
<build>
[...]
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
[...]
</project>

Creating an Executable JAR

会生成入口文件:META-INF/MANIFEST.MF;

仅仅jar和war支持archive元素;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<project>
[...]
<build>
[...]
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.3.0</version>
<configuration>
[...]
<archive>
<manifest>
<mainClass>org.sample.App</mainClass>
</manifest>
</archive>
</configuration>
[...]
</plugin>
[...]
</project>