maven仓库总结,maven私服搭建,批量mvn eclipse:eclipse

时间:2022-02-22 15:15:41

配置pom.xml依赖包时在这里找包的描述:

http://search.maven.org/#browse

以java为根目录。

mvn archtype:generate -DgroupId=zttc.itat.maven -DartifactId=maven-ch03 -Dversion=1.0.0

配置maven/bin/.conf, 更改m2文件路径, 改为maven/repos

preferences->maven-installation,替换默认mvn

替换默认usersettings.xml

new maven project-->quickstart, 另一外常用的是webapp.

添加dependency:

www.mvnrepository.com

preference->editor->content assistant->auto activation: auto activation for java: .@

preference->editor->content assistant->auto activation: auto activation for java: #

右键工程->run as->build->clean install

几个不错的java类、jar包及其依赖查找网站:

http://search.maven.org/

http://mvnrepository.com/

http://mvnbrowser.com/

http://www.sonatype.org/

http://www.findjar.com/index.x

http://www.jarvana.com/jarvana/ (强烈推荐,界面不错,而且信息非常详细,是目前发现的最好的!!!可是我怎么打不开呢……)

国内仓库:http://maven.oschina.net/help.html

http://maven.oschina.net/content/groups/public/

http://maven.oschina.net/home.html

http://www.findmaven.net/

maven坐标和依赖,包含任何一个信赖、插件和构建,如log4j.jar, maven-compiler-plugin,account-email.jar.
先查找本地仓库再查找远程仓库,
局域网创建私服,节省时间
除了*仓库,私服,还有其它公开仓库:http://download.java.net/maven/2/,  http:/repository.jboss.com/maven2
仓库路径配置文件:~/.m2/setting.xml,此文件默认不存在需要从$M2_HOME/conf/setting.xml复制过来。
install把构建出来的jar包复制到本地仓库目录。
*仓库:
<repositories>  
  <repository>  
    <id>central</id>  
    <name>Maven Repository Switchboard</name>  
    <layout>default</layout>  
    <url>http://repo1.maven.org/maven2</url>  
    <snapshots>  
      <enabled>false</enabled>  
    </snapshots>  
  </repository>  
</repositories>

*仓库可能无法满足需求,需要配置另外一远程仓库
<repositories>  
<repository>  
    <id>jboss</id>  
    <name>JBoss Repository</name>  
    <url>http://repository.jboss.com/maven2/</url>  
    <releases>  
        <updatePolicy>daily</updatePolicy><!-- never,always,interval n -->  
        <enabled>true</enabled>  
        <checksumPolicy>warn</checksumPolicy><!-- fail,ignore -->  
    </releases>  
    <snapshots>  
        <enabled>false</enabled>  
    </snapshots>  
    <layout>default</layout>  
</repository>  
</repositories>

列举几个常用的maven repository,分享一下,也防止长时间不用忘了:
    <repositories>  
        <repository>  
            <id>jboss-cache</id>  
            <name>jboss-cache</name>  
            <url>http://repository.jboss.org/maven2</url>  
        </repository>  
        <repository>  
            <id>mvnsearch</id>  
            <name>mvnsearch Maven Repository</name>  
            <url>http://www.mvnsearch.org/maven2</url>  
        </repository>  
        <repository>  
            <id>ibiblio</id>  
            <name>ibiblio Maven Repository</name>  
            <url>http://www.ibiblio.org/maven2</url>  
        </repository>  
        <repository>  
            <id>mirrors.ibiblio</id>  
            <name>mirrors.ibiblio Maven Repository</name>  
            <url>http://mirrors.ibiblio.org/pub/mirrors/maven2</url>  
        </repository>  
        <repository>  
            <id>repo.springsource.org</id>  
            <name>repo.springsource.org-releases</name>  
            <url>http://repo.springsource.org/libs-milestone-local</url>  
            <snapshots>  
                <enabled>false</enabled>  
            </snapshots>  
        </repository>  
    </repositories>  
在记两个搜索jar包的maven依赖的常用地址:
http://search.maven.org/
http://mvnrepository.com/

私服主要作用是部署第三方构件,包含企业内部生成的构件以及无法从外部仓库直接获取的构件。
maven对项目编译,测试,打包,还可以将生成构建部署到仓库中。

distributionManagement有发布和快照两个版本,分别有id,name,url三项,对应远程唯一仓库:
<distributionManagement>
    <snapshotRepository>
        <id>ossrh</id>
        <url>https://oss.sonatype.org/content/repositories/snapshots</url>
    </snapshotRepository>
</distributionManagement>
mvn clean deploy在配置完成后构建输出部署到远程仓库。
SNAPSHOT版本带有时间戳,maven每天检查一次时间戳来更新,强制更新用mvn clean install-U。

镜像结合私服:
<mirrors>
    <mirror>
        <id>internal-repository</id>
        <name>Internal Repository Manager</name>
        <url>http://192.168.1.1/maven2/</url>
        <mirrofOf>*</mirrorOf>
    </mirror>
</mirrors>

仓库搜索服务:
sonatype nexus是最流行仓库管理软件:https://repository.sonatype.org/,支持关键字、类名搜索,坐标搜索,检验和搜索功能。。、
jarvana.com/ 支持关键字、类名搜索、构件下载,依赖声明片段
http://mvnbrowser.com/
http://mvnrepository.com/

国内连接maven官方的仓库更新依赖库,网速一般很慢,收集一些国内快速的maven仓库镜像以备用。

====================国内OSChina提供的镜像,非常不错===================

<mirror>

<id>CN</id>
   
  <name>OSChina Central</name>                              
                                                                       
                
      <url>http://maven.oschina.net/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>

</mirror>

========================================================

OSChina Maven 库使用帮助

==================其他maven仓库镜像==========================

<mirror>  
      <id>repo2</id>  
      <mirrorOf>central</mirrorOf>  
      <name>Human Readable Name for this Mirror.</name>  
      <url>http://repo2.maven.org/maven2/</url>  
</mirror>  
<mirror>  
      <id>net-cn</id>  
      <mirrorOf>central</mirrorOf>  
      <name>Human Readable Name for this Mirror.</name>  
      <url>http://maven.net.cn/content/groups/public/</url>   
</mirror>  
<mirror>  
      <id>ui</id>  
      <mirrorOf>central</mirrorOf>  
      <name>Human Readable Name for this Mirror.</name>  
     <url>http://uk.maven.org/maven2/</url>  
</mirror>  
<mirror>  
      <id>ibiblio</id>  
      <mirrorOf>central</mirrorOf>  
      <name>Human Readable Name for this Mirror.</name>  
     <url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url>  
</mirror>  
<mirror>  
      <id>jboss-public-repository-group</id>  
      <mirrorOf>central</mirrorOf>  
      <name>JBoss Public Repository Group</name>  
     <url>http://repository.jboss.org/nexus/content/groups/public</url>  
</mirror>

其它:

出现莫名问题,删除~/.m2/目录下对应子目录。

不同操作系统.m2目录内容一样,此文件夹可相互拷贝.

在主目录下,批量clean各代码包:dir=`pwd`; for i in `find $dir -name "pom.xml"`;do pom_path=${i%pom*};cd $pom_path; echo "current path is::::::::::::::::::::::::::::::::::::"$pom_path;mvn eclipse:eclipse;cd $dir;done

批量文件汇总: dir=`pwd`; for i in `find $dir -type d`;do cd $i; l=`echo $i|awk -F "/" '{print $5}'`;echo $i;cat *.csv|sort|uniq > $dir/g_${l}_all.csv;cd $dir;done

四、Maven仓库

Maven通过项目定义的坐标来管理这些依赖,而这些依赖的物理文件是通过Maven的仓库来统一管理的。

对于一个依赖坐标,它会按照如下方式反映到Maven的仓库中。

1、将groupId转化为路径:将groupId中的包名分隔符(.)转换成路径分隔符(/)。对于上面的例子就是 org.apache.struts -> org/apache/struts/

2、将artifactId转化为路径:在groupId转化的路径基础上连接artifactId。生成路径为: org/apache/struts/struts2-core/

3、将verion转化为路径:在artifactId转化的路径基础上连接version。生成路径为: org/apache/struts/struts2-core/2.3.8/

4、根据artifactId和version生成依赖包文件名:上例就是 struts2-core-2.3.8

5、根据依赖的打包方式确定文件的扩展名。对于上例它的扩展名就是.jar

这样根据路径和文件名就找到了这个物理文件在仓库中的位置:org/apache/struts/struts2-core/2.3.8/struts2-core-2.3.8.jar

Maven的仓库分为本地仓库和远程仓库。

本地仓库:是Maven在我们本机设置的仓库目录,默认目录为当前用户目录下的.m2/repository.

远程仓库包括*仓库、私服、其他公共仓库。

*仓库是Maven提供的远程仓库,地址是:http://repo.maven.apache.org/maven2

私服是我们为了节省带宽和时间,提升效率,在局域网架设的私有Maven仓库。

Maven在根据依赖坐标查找依赖时,首先会从本地仓库查找该依赖包,当本地仓库中没有这个依赖包时,Maven会从*仓库查找依赖,并下载到本地仓库。最后,在我们项目的classpath中引用本地仓库的依赖包路径。

五、聚合与继承

一个项目通常存在多个模块,每个模块都是作为一个独立的工程存在。通过Maven配置文件可以把多个模块聚合在一起进行编译发布,并且它的聚合非常简单只需要使用元素添加模块就可以完成聚合。我们参考struts2的pom.xml文件来看一下聚合的配置方式:

4.0.0

org.apache.struts

struts2-parent

2.3.8

org.apache.struts

struts2-apps

pom

Webapps

blank

mailreader

portlet

showcase

rest-showcase

另外,在这个项目的个各模块间通常是存在引用关系,并且每个模块会引用一些相同的依赖,Maven也提供了继承的机制来管理这些共同的依赖。你可以编写一 个pom.xml文件作为父级pom配置,各个模块在自己的pom.xml中继承父级pom文件,就像上面的示例那样,使用元素标识继承的父级pom文 件。

父级pom文件的编写:

1、父级pom文件的packaging必须是pom,它需要作为pom文件发布以便子pom继承

2、在父级pom可以使用配置依赖管理。在下的依赖声明不会引入实际依赖,但是可以让子模块继承依赖配置。例如,在子模块中我们只标识依赖的groupId和artifactId,它就可以根据父类的依赖管理获取这个依赖的version及exclussions等配置。

3、在父级pom中可以使用配置插件管理。作用和类似,只不过一个管理依赖一个管理插件。

子模块pom文件的编写:

1、需要使用元素标识继承的父pom

2、可以使用标识父级pom的物理路径,子模块会直接从指定的路径加载父级pom文件,未指定该元素时,子模块将根据父级pom的坐标从Maven仓库查找

3、子模块pom可以继承父级pom中除artifactId之外的大部分配置,因此子模块的groupId、version以及依赖的version都可以省略。

使用 OSC Maven 仓库: maven.oschina.net

1 安装

1.1 下载 Maven

下载 Maven 程序包,下载地址:http://maven.apache.org/download.cgi

1.2 安装 Maven

解压已下载的 Maven 程序包,到本地磁盘(如:D:\SDK\Maven)。

1.3 配置环境变量

设置以下环境变量:

  • M2_HOME = D:\SDK\Maven

  • PATH = ...;%M2_HOME%\bin

1.4 测试安装

可使用 mvn -version 命令查看已安装的 Maven 版本号。

2 基础配置

修改 Maven 配置文件(setting.xml),可修改全局配置或用户配置:

  • 全局配置:%M2_HOME%\conf\settings.xml

  • 用户配置:用户目录\.m2\settings.xml

2.1 配置 OSC Maven 镜像

<mirrors>
...
        <mirror>
            <id>osc</id>
            <mirrorOf>*</mirrorOf>
            <url>http://maven.oschina.net/content/groups/public/</url>
        </mirror>
...
</mirrors>

2.2 配置 OSC Maven 仓库

<profiles>
...
        <profile>
            <id>osc</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <repositories>
                <repository>
                    <id>osc</id>
                    <url>http://maven.oschina.net/content/groups/public/</url>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <id>osc</id>
                    <url>http://maven.oschina.net/content/groups/public/</url>
                </pluginRepository>
            </pluginRepositories>
        </profile>
...
</profiles>

3 高级配置

注意:以下高级配置可根据实际情况有选择性地使用。

3.1 配置本地仓库路径

若需要指定 Maven 本地仓库的路径时,可进行如下配置:

<localRepository>D:/Repository/Maven</localRepository>

需要根据实际情况进行配置。

3.2 配置 HTTP 代理

对于有些公司而言,需要配置 HTTP 代理才能上外网,可进行如下配置:

<proxies>
...
    <proxy>
         <active>true</active>
         <protocol>http</protocol>
         <host>xxx.xxx.xxx.xxx</host>
         <port>xxxx</port>
    </proxy>
...
</proxies>

需要根据实际情况进行配置。

3.3 配置 Maven 用户

若需要使用 mvn deploy 命令,将自己的 jar 包上传到 OSC Maven 仓库时,可进行如下配置:

<servers>
...
    <server>
         <id>osc</id>
         <username>xxx</username>
         <password>xxx</password>
    </server>
...
</servers>

提示:需要联系 OSC Maven 仓库管理员(廖凯)获取用户名与密码。

此外,需要在 pom.xml 中添加以下配置:

...
    <distributionManagement>

<repository>

<id>osc</id>

<url>http://maven.oschina.net/content/repositories/thirdparty/</url>

</repository>

<snapshotRepository>

<id>osc</id>

<url>http://maven.oschina.net/content/repositories/osc_snapshots/</url>

</snapshotRepository>

</distributionManagement>

...

4. 理解 pom.xml

当您打开自动生成的 pom.xml,或许会感觉到可读性不太好,有必要做一下格式化,经过整理后是这样的:

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
26
27
28
29
<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.smart</groupId>
    <artifactId>smart-demo</artifactId>
    <version>1.0</version>
    <packaging>war</packaging>
    <name>smart-demo Maven Webapp</name>
    <url>http://maven.apache.org</url>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <finalName>smart-demo</finalName>
    </build>
</project>

从上往下简要说明一下:

  • modelVersion:这个是 POM 的版本号,现在都是 4.0.0 的,必须得有,但不需要修改。

  • groupId、artifactId、version:分别表示 Maven 项目的组织名、构件名、版本号,它们三个合起来就是 Maven 坐标,根据这个坐标可以在 Maven 仓库中对应唯一的 Maven 构件

  • packaging:表示该项目的打包方式,war 表示打包为 war 文件,默认为 jar,表示打包为 jar 文件。

  • name、url:表示该项目的名称与 URL 地址,意义不大,可以省略。

  • dependencies:定义该项目的依赖关系,其中每一个 dependency 对应一个 Maven 项目,可见 Maven 坐标再次出现,还多了一个 scope,表示作用域(下面会描述)。

  • build:表示与构建相关的配置,这里的 finalName 表示最终构建后的名称 smart-demo.war,这里的 finalName 还可以使用另一种方式来定义(下面会描述)。

如果用树形图来表达 pom.xml,那么会更加清晰:

maven仓库总结,maven私服搭建,批量mvn eclipse:eclipse

可见,除了项目的基本信息(Maven 坐标、打包方式等)以外,每个 pom.xml 都应该包括:

  1. Lifecycle(生命周期)

  2. Plugins(插件)

  3. Dependencies(依赖)

Lifecycle 是项目构建的生命周期,它包括 9 个 Phase(阶段)。

大家知道,Maven 是一个核心加上多个插件的架构,而这些插件提供了一系列非常重要的功能,这些插件会在许多阶段里发挥重要作用。

阶段 插件 作用
clean clean 清理自动生成的文件,也就是 target 目录
validate 由 Maven 核心负责 验证 Maven 描述文件是否有效
compile compiler、resources 编译 Java 源码
test compiler、surefire、resources 运行测试代码
package war 项目打包,就是生成构件包,也就是打 war 包
verify 由 Maven 核心负责 验证构件包是否有效
install install 将构件包安装到本地仓库
site site 生成项目站点,就是一堆静态网页文件,包括 JavaDoc
deploy deploy 将构件包部署到远程仓库

以上表格中所出现的插件名称实际上是插件的别名(或称为前缀),比如:compiler 实际上是 org.apache.maven.plugins:maven-compiler-plugin:2.3.2,这个才是 Maven 插件的完全名称。

每个插件又包括了一些列的 Goal(目标),以 compiler 插件为例,它包括以下目标:

  • compiler:help:用于显示 compiler 插件的使用帮助。

  • compiler:compile:用于编译 main 目录下的 Java 代码。

  • compiler:testCompile:用于编译 test 目录下的 Java 代码。

可见,插件目标才是具体干活的人,一个插件包括了一个多个目标,一个阶段可由零个或多个插件来提供支持。

我们可以在 pom.xml 中定义一些列的项目依赖(构件包),每个构件包都会有一个 Scope(作用域),它表示该构件包在什么时候起作用,包括以下五种:

  1. compile:默认作用域,在编译、测试、运行时有效

  2. test:对于测试时有效

  3. runtime:对于测试、运行时有效

  4. provided:对于编译、测试时有效,但在运行时无效

  5. system:与 provided 类似,但依赖于系统资源

可用一张矩阵表格来表示:

作用域 编译时有效 测试时有效 运行时有效 示例
compile smart-framework.jar
test junit.jar
runtime mysql-connector-java.jar
provided servlet-api.jar
system JDK 的 rt.jar

pom.xml 大致解释一下:

  • 我们可使用 properties 来定义一些配置属性,例如:project.build.sourceEncoding(项目构建源码编码方式),可设置为 UTF-8,可防止中文乱码。也可定义相关构件包版本号,例如:smart.version,便于日后统一升级。

  • 建议使用最新版本的 JUnit,通过 Archetype 自动生成的 JUnit 太老了(3.8.1),可改为最新版(4.11)。

  • 因为没必要使用 MySQL 客户端的 API,它仅仅在运行时有效,所以我们将 MySQL 构件包的作用域设置为 runtime。

  • 因为我们只想在代码中使用 Servlet API,而不想将它所对应的 jar 包放入 WEB-INF 的 lib 目录下,所以我们可设置 Servlet 构件包的作用域为 provided。

  • 为了保证在 JDK 1.6 运行,我们可配置 maven-compiler-plugin 插件,设置输入源码为 1.6,编译输出的字节码也为 1.6。

  • 如果想跳过测试,可配置 maven-surefire-plugin 插件,将 skipTests 设置为 true。

  • 如果想配置生成的 war 包为 artifactId,可修改 maven-war-plugin 插件,将 warName 修改为 ${project.artifactId},这样就无需再配置 finalName 了。

  • 如果想通过 Maven 将应用部署到 Tomcat 中,可使用 tomcat7-maven-plugin 插件,可使用 mvn tomcat7:run-war 命令来运行 war 包。

5. 使用 Maven 命令

前面我们已经使用了几个 Maven 命令,例如:mvn archetype:generate,mvn tomcat7:run-war 等。其实,可使用两种不同的方式来执行 Maven 命令:

方式一:mvn <插件>:<目标> [参数]

    • mvn source:jar 生成源码包
    • mvn javadoc:jar 生成帮助文档

方式二:mvn <阶段>

现在我们接触到的都是第一种方式,而第二种方式才是我们日常中使用最频繁的,例如:

  • mvn clean:清空输出目录(即 target 目录),清理上一次构建生成的文件

  • mvn compile:编译为class文件,编译项目的主源码,一般来说,是对src/main/resources目录的内容进行变量替换等工作后,复制到项目输出的主classpath目录中,不生成jar包。

  • mvn package:生成构件包(一般为 jar 包或 war 包),接受编译好的代码,打包成可发布的格式,如JAR。

  • mvn install:将构件包安装到本地仓库,供本地其他Maven项目使用。

  • mvn deploy:将构件包部署到远程仓库,供其他开发人员和Maven项目使用。

  • validate: 验证项目是否正确,所有必须的信息是否可用。

  • test: 使用单元测试框架对编译后的源码进行测试 , 测试代码不会被打包或部署。

  • integration-test: process and deploy the package if necessary into an environment where integration tests can be run

  • verify: run any checks to verify the package is valid and meets quality criteria

  • site: 生成项目站点文档,清理项目(clean the project),拷贝依赖(copy dependencies)和打包项目(package the project,即执行所有阶段来打包,    注意的是,阶段(phase)和目标(goal)可以顺序执行。此阶段根据项目的POM文件生成了一个site。你可以发现在target/site目录下生成了文档。

  • mvn clean dependency:copy-dependencies package:阶段实际上被映射到底层的目标。每个阶段执行的具体目标依赖于项目的包装类型。例如,如果项目类型是一个JAR的话,package 执行 jar:jar ,而如果项目类型是 WAR 的话,执行的是 war:war

项目对象模型(Project Object Model),通常称为POM文件。

    POM

pom.xml文件是一个Maven项目的核心配置文件。它是包含了大部分你期望如何build一个项目所需信息的一个配置文件。POM比较庞大而且比较复杂,但是即使没有完全理解,我们也能够有效地使用它。该项目的POM如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.oschina.test</groupId>
  <artifactId>my-maven-test</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>my-maven-test</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>
What did I just do?

你执行了Maven的目标(goal) archetype:generate,并添加了一系列的参数。前缀archetype是包含了目标的插件。如果你熟悉Ant ,你可以设想这类似于Ant中的任务(task)。这个目标创建了一个基于原型(archetype)的简单项目。我只想说,一个插件是一系列拥有共同目的(general common purpose)的目标的集合。例如,jboss-maven-plugin插件,其目的是“处理各种JBoss项目(deal with various jboss items)” 。

Build the Project
1
mvn package

命令行中将打印编译时的各种信息,输出了“BUILD SUCCESS”时表示项目编译成功了。

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
[WARNING] 
[WARNING] Some problems were encountered while building the effective settings
[WARNING] Unrecognised tag: 'activeProfile' (position: START_TAG seen ...</activeProfiles>\n  -->\n  <activeProfile>... @278:18)  @ /usr/local/apache-maven-3.1.1/conf/settings.xml, line 278, column 18
[WARNING] Unrecognised tag: 'activeProfile' (position: START_TAG seen ...</activeProfiles>\n  -->\n  <activeProfile>... @278:18)  @ /Users/flanliulf/.m2/settings.xml, line 278, column 18
[WARNING] 
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building my-maven-test 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-resources-plugin/2.6/maven-resources-plugin-2.6.pom
Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-resources-plugin/2.6/maven-resources-plugin-2.6.pom (8 KB at 1.0 KB/sec)
。。。(省略)
Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/surefire/surefire-junit3/2.12.4/surefire-junit3-2.12.4.jar (26 KB at 13.9 KB/sec)
-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.oschina.test.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.005 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] 
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ my-maven-test ---
Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/maven-archiver/2.5/maven-archiver-2.5.pom
Downloaded: http://repo.maven.apache.org/maven2/org/apache/maven/maven-archiver/2.5/maven-archiver-2.5.pom (5 KB at 3.5 KB/sec)
。。。(省略)
Downloaded: http://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-archiver/2.1/plexus-archiver-2.1.jar (181 KB at 32.7 KB/sec)
[INFO] Building jar: /Users/flanliulf/maven-proj/my-maven-test/target/my-maven-test-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1:42.914s
[INFO] Finished at: Thu Jan 23 15:41:20 CST 2014
[INFO] Final Memory: 11M/81M
[INFO] ------------------------------------------------------------------------

不同于执行的第一个命令(archetype:generate),你可能会注意到第二个是简单的一个字 - package。这不是一个目标(goal),这是一个阶段(phase)。 一个阶段是一个构建的生命周期build lifecycle)中的一步,一个构建的生命周期,可以看做是一系列阶段的有序集合。当指定了一个阶段时, Maven将顺序执行每个阶段。例如,如果我们执行编译(compile)阶段,实际被执行的各个阶段如下:

1
2
3
4
5
6
1.validate
2.generate-sources
3.process-sources
4.generate-resources
5.process-resources
6.compile

你可以使用下面的命令来测试刚刚编辑和打包的jar:

1
java -cp target/my-maven-test-1.0-SNAPSHOT.jar com.oschina.test.App

将会得到如下输出:

1
Hello World!

maven私服搭建:

http://blog.csdn.net/shenshen123jun/article/details/9084293

http://blog.csdn.net/dhmpgt/article/details/9998321

http://www.sonatype.org/nexus/

https://www.baidu.com/s?wd=maven%E7%A7%81%E6%9C%89%E4%BB%93%E5%BA%93%20%E6%90%AD%E5%BB%BA&rsv_spt=1&rsv_iqid=0xe07be3ef000110a0&issp=1&f=3&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_sug3=15&rsv_sug1=18&rsv_sug2=0&prefixsug=maven%E7%A7%81&rsp=0&rsv_sug7=100&inputT=7540&rsv_sug4=7540