Maven 包管理工具介绍

发布时间: 更新时间: 总字数:1228 阅读时间:3m 作者: IP属地: 分享 复制网址

Maven是Java的包管理工具

简介

Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。

安装

下载解压

下载地址:http://maven.apache.org/download.cgi

我选择的版本:apache-maven-3.3.3-bin.zip

下载完后,解压到安装目录:D:\softwore\apache-maven-3.3.3

Linux 配置

tar -zxvf apache-maven-3.3.3-bin.tar.gz -C /usr/loca/
export PATH=/usr/loca/apache-maven-3.3.3/bin:$PATH

# 选项,配置不验证 SSL 证书
$ cat << EOF > ~/.mavenrc
MAVEN_OPTS="-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.validity.dates=true"
EOF

Widnows 配置

下面开始配置环境变量,右击【我的电脑】—【属性】—【高级】—【环境变量】:

在【系统变量】选择“新建”–弹出“新建系统变量”对话框,在“变量名”文本框输入“MAVEN_HOME”,在“变量值”文本框输入JDK的安装路径,单击“确定”按钮:

MAVEN_HOME
D:\softwore\apache-maven-3.3.3

在“系统变量”选项区域中查看PATH变量,如果不存在,则新建变量 PATH,否则选中该变量,单击“编辑”按钮,在“变量值”文本框的起始位置添加“%MAVEN_HOME%\bin”,单击确定按钮:

%MAVEN_HOME%\bin;

现在测试环境变量的配置成功与否。在DOS命令行窗口输入“JAVAC”,输出帮助信息即为配置正确,如下:

C:\Users\xiexianbin>mvn --version
Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T19:57:3
7+08:00)
Maven home: D:\softwore\apache-maven-3.3.3\bin\..
Java version: 1.7.0_25, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.7.0_25\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"

C:\Users\xiexianbin>

配置缓存目录

修改 apache-maven-3.5.2\conf\settings.xml

  <!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository
  <localRepository>/path/to/local/repo</localRepository>
  -->
  <localRepository>F:\java_cache\.m2\repository</localRepository>

配置代理

<settings>
  .
  <proxies>
   <proxy>
      <id>example-proxy</id>
      <active>true</active>
      <protocol>http</protocol>
      <host>proxy.example.com</host>
      <port>8080</port>
      <username>proxyuser</username>
      <password>somepassword</password>
      <nonProxyHosts>www.google.com|*.example.com</nonProxyHosts>
    </proxy>
  </proxies>
  .
</settings>

配置加速

<mirror>
  <id>aliyunmaven</id>
  <mirrorOf>*</mirrorOf>
  <name>阿里云公共仓库</name>
  <url>https://maven.aliyun.com/repository/public</url>
</mirror>

mvnw 介绍

  • mvnw(Maven Wrapper) 负责给特定的项目安装指定版本的Maven,且不影响其他项目
  • 官网
  • 创建,在 pom.xml 目录执行
$ mvn wrapper:wrapper

# 目录结构
$ tree <project-name>
├── .mvn
│   └── wrapper
│       ├── MavenWrapperDownloader.java
│       ├── maven-wrapper.jar
│       └── maven-wrapper.properties
├── mvnw
├── mvnw.cmd
├── pom.xml
...
  • 构建
./mvnw clean install
./mvnw clean package

FaQ

解决Maven报Plugin execution not covered by lifecycle configuration问题

一个错误示例,子项目引用了父项目,子项目parent标签处报错如下:

Multiple annotations found at this line:
- maven-enforcer-plugin (goal "enforce") is ignored by m2e.
- Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:aspectj-maven-plugin:1.3.1:compile (execution:
 default, phase: compile)

解决办法,参照官网给出解释及解决办法:http://wiki.eclipse.org/M2E_plugin_execution_not_covered

标签外再套一个 标签可以解决该问题:

http://stackoverflow.com/questions/6352208/how-to-solve-plugin-execution-not-covered-by-lifecycle-configuration-for-sprin

<build>
    <pluginManagement>
        <plugins>
            <plugin> ... </plugin>
            <plugin> ... </plugin>
                  ....
        </plugins>
    </pluginManagement>
</build>

但是有时候父项目pom不能被修改,可用官网最后给出的解决办法:

Window-Perferences-Maven-Lifecycle Mapping

保存如下内容:

<?xml version="1.0" encoding="UTF-8"?>
<lifecycleMappingMetadata>
    <pluginExecutions>

        <pluginExecution>
            <pluginExecutionFilter>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>aspectj-maven-plugin</artifactId>
                <goals>
                    <goal>compile</goal>
                </goals>
                <versionRange>[1.3,)</versionRange>
            </pluginExecutionFilter>
            <action>
                <ignore />
            </action>
        </pluginExecution>

    </pluginExecutions>
</lifecycleMappingMetadata>

记得点击 Reload workspace lifecycle mappings metadata 按钮

Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数