【MAVEN】常用配置记录

1. 配置文件修改

  - 修改local库的位置

  - 配置源mirror,推荐很流畅的一个阿里源2017.3.30流畅可用

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

    <localRepository>D:\Program Files\mvn_repo</localRepository>

    <mirrors>
        <!-- 阿里云仓库 -->
        <mirror>
            <id>alimaven</id>
            <mirrorOf>central</mirrorOf>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
        </mirror>

        <!-- 中央仓库1 -->
        <mirror>
            <id>repo1</id>
            <mirrorOf>central</mirrorOf>
            <name>Human Readable Name for this Mirror.</name>
            <url>http://repo1.maven.org/maven2/</url>
        </mirror>

        <!-- 中央仓库2 -->
        <mirror>
            <id>repo2</id>
            <mirrorOf>central</mirrorOf>
            <name>Human Readable Name for this Mirror.</name>
            <url>http://repo2.maven.org/maven2/</url>
        </mirror>
    </mirrors>
</settings>

2. maven的几个基础概念

groupId: 项目的组织机构,也是java包的目录结构,一般都是域名的倒序,比如 com.firefoxbug.www
artifactId: 项目实际的名字,比如log4j
packaging: 包的类型,比如jar
version: 项目版本号,比如1.0-SNAPSHOT

创建工程

$ groupId=com.firefoxbug.www
$ artifactId=HelloWorld
$ version=1.0-SNAPSHOT
$ mvn archetype:generate -DgroupId=${groupId} -DartifactId=${artifactId} -Dpackage=${groupId} -Dversion=${version}

形成的目录

HelloWorld/
├── pom.xml
└── src
    ├── main
    │   └── java
    │       └── com
    │           └── firefoxbug
    │               └── www
    │                   └── App.java
    └── test
        └── java
            └── com
                └── firefoxbug
                    └── www
                        └── AppTest.java

3. pom.xml

标签说明

<project>       pom文件的顶级节点
<modelVersion>     object model版本,对Maven2和Maven3来说,只能是4.0.0 
<groupId>       项目创建组织的标识符,一般是域名的倒写
<artifactId>      定义了项目在所属组织的标识符下的唯一标识,一个组织下可以有多个项目
<version>        当前项目的版本,SNAPSHOT,表示是快照版本,在开发中

<packaging>      打包的方式,有jar、war、ear等
<name>        项目的名称
<url>          项目的地址

<properties>    属性配置,比如:<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<dependencies>     构建项目依赖的jar
<project >
  <groupId>com.firefoxbug.helloworld</groupId>
  <artifactId>helloworld</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>helloworld</name>

  <dependencies>
    <dependency>
    </dependency>
  </dependencies>
</project>

如果添加httpclient,http://mvnrepository.com/中搜索httpclient

以4.5.2为例,复制dependency标签插入dependencies标签内,

<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
<dependency>
  <groupId>org.apache.httpcomponents</groupId>
  <artifactId>httpclient</artifactId>
  <version>4.5.2</version>
</dependency>

4. maven 常用 cli

1. mvn compile 编译源代码
2. mvn test-compile 编译测试代码
3. mvn test 运行测试
5. mvn package 打包,根据pom.xml打成war或jar
    如果pom.xml中设置 war,则此命令相当于mvn war:war
    如果pom.xml中设置 jar,则此命令相当于mvn jar:jar
6. mvn -Dtest package
    打包但不编译test例子:mvn package -Dmaven.test.skip=true
    打包、编译但是不运行test例子: mvn package -DskipTests
7. mvn install  在本地Repository中安装jar,就把maven构建项目的【清理】→【编译】→【测试】→【打包】的这几个过程都做了,同时将打包好的jar包发布到本地的Maven仓库中
8. mvn clean    清除产生的项目
9. mvn eclipse:eclipse 生成eclipse项目
10.mvn idea:idea    生成idea项目
11.mvn eclipse:clean    清除eclipse的一些系统设置

支持组合命令

maven clean compile

查看dependency:tree

mvn dependency:tree

执行测试代码

mvn clean test

CLI创建maven项目,使用"mvn archetype:generate"命令和"mvn archetype:create"都可以创建项目,目前没有发现这两者的区别,

唯一区别的地方就是发现使用"mvn archetype:generate"命令创建项目时要特别长的时间才能够将项目创建好,而使用"mvn archetype:create"命令则可以很快将项目创建出来。

mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=myapp -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

或者

mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=myapp -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

BUILD SUCCESS就表示项目构建成功

5. 打包的几种方式

  maven编译打包可以支持三种模式,分别如下:

    -no-dependencies: 这种模式下target下面不会出现任何依赖的包,必须手动指定-classpath设置所在环境的依赖包路径;

    -with-dependencies: 这种模式会把所有外部依赖的包都打进一个jar包,只需要把jar包发布到线上即可运行;

    -copy-dependencies: 这种模式会把外部依赖的jar包都独立生成到target/下面,运行时候手动指定-classpath;

  -with-dependencies例子,使用插件maven-assembly-plugin

<project>
    ...
    <build>
        <sourceDirectory>src/main/java</sourceDirectory>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>attached</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    ...
</project>

-copy-dependencies: 使用插件org.apache.maven.plugins

<project>
    ...
    <build>
        <sourceDirectory>src/main/java</sourceDirectory>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>
                                ${project.build.directory}
                            </outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    ...
</project>

6. 创建webL类型的项目

mvn archetype:generate

mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-WebApp -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false

打包成war,送至tomcat发布

7. 常用插件 org.apache.maven.plugins

maven-compiler-plugin等

举例

<build>
        <finalName>HttpClientUtil</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.3</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <appendAssemblyId>false</appendAssemblyId>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <archive>
                        <manifest>
                            <mainClass>JmeterJavaReq.HttpClientUtil</mainClass>
                        </manifest>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>assembly</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

        </plugins>
    </build>

参考的文章

http://www.tuicool.com/articles/jMRVb2http://www.cnblogs.com/xdp-gacl/tag/Maven%E5%AD%A6%E4%B9%A0%E6%80%BB%E7%BB%93/
时间: 2024-08-14 09:11:21

【MAVEN】常用配置记录的相关文章

Maven 常用配置

pom.xml基础配置: <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <spring.framework.version>3.0.5.RELEASE</spring.framework.version> <cxf.version>2.3.2</cxf.version> <tiles.version>

阿里云yum仓库和maven仓库配置记录

阿里云yum源仓库配置: 镜像地址:http://mirrors.aliyun.com/    仓库地址:http://mirrors.aliyun.com/repo/    安装过程:        备份:mv        下载:wget        更新:yum clean all:yum makecache 阿里云maven中央仓库配置: 阿里云Maven仓库地址--加速你的maven构建    在maven的settings.xml文件里配置mirrors的子节点,添加如下mirro

maven常用配置

[+] eclipse 安装maven 插件 最好还是在marketplace处安装,不容易出现问题,当然,这种方式最大问题是速度慢,而且有时候网络连接经常断掉 help-eclipse marketplace打开,搜索maven 安装第三个,如果要开发WEB项目,则还需要安装第一个. 配置jetty服务器 [html] view plain copy print? <plugin> <groupId>org.mortbay.jetty</groupId> <ar

maven常用配置信息和常量

1.   通过 <properties> 元素用户可以自定义一个或多个属性,然后在 POM 的其他地方使用 ${ 属性名称 } 的方式引用属性,这种做法的最大意义在于消除重复. 2.   Maven 共有六类属性: 1) 内置属性: ${basedir} 表示项目根目录,即 pom.xml 文件的目录. ${version} 表示项目版本. 2) POM 属性:用户可以使用该类属性引用 POM 文件中对应元素的值: a)  ${project.build.sourceDirectory} :项

IDEA个人常用配置记录.md

目录 一.常用快捷键 二.技巧 一.常用快捷键 调试 Ctrl + D:调试运行 F8:跳到下一步 F7:进入方法内部 Shift + F8:跳到下一个断点或者跳出方法 重构 ? + Shift + V:访问历史粘贴板 ? + Shift + .:折叠指定方法.代码块 ? + Shift + -:折叠所有方法 ? + Shift + +:展开所有折叠 ? + Option + L:格式化代码 Ctrl + Option + O:优化import Shift + F6:重命名文件 查找与替换 ?

我的vim和emacs常用配置记录

因为经常改变工作环境,所以在这里记录一下我的.vimrc文件和.emacs文件的内容. vimrc的配置文件,主要是设置语法高亮,和tab键的宽度,个人喜欢设置为4个空格的分量. set nu syntax on set tabstop=4 set softtabstop=4 set shiftwidth=4 emacs配置文件的内容,主要是设置tab键的宽度和c语言的自动对齐. ;; tab and space ;; when true, emacs use mixture of tab an

linux 常用配置记录

dhcpd.conf Option domain-name "test.com";  #DNS 名Option domain-name-servers 61.139.2.69,114.114.114.114; #DNS地址  Default-lease-time 21600;   #默认租约时间Max-lease-time 43200;     #最大租约时间  Subnet 192.168.1.0 netmask 255.255.255.0        #指定要划分的网段  和子网

Maven常用插件配置和使用

主要介绍Maven的几个常见第三方插件(cobertura.findbugs.source.assembly.插件开发)配置和使用,接Maven介绍 maven本质上是一个插件框架,它的所有工作都交给插件来做,每个插件可以有多个goal.除了自带的插件之外还有很多比较成熟的第三方插件,我们也很容易上手进行简单的插件开发,下面一一介绍 1 自带插件maven自带的核心插件为Build plugins和Reporting plugins.mvn compile编译源码实际上就利用到了maven-co

maven常用插件pom配置

一.问题描述: 部署一个maven打包项目时,jar包,依赖lib包全部手动上传至服务器,然后用maven部署报错:Exception in thread "main" java.lang.NoClassDefFoundError:,当时心想可能是依赖的lib包有问题,各种重新部署(以为是依赖的包没有更新),确忽略了一个大问题:pom.xml没仔细检查.解决方法:最终发现<plugin>                <groupId>org.apache.ma