配置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 坐标、打包方式等)以外,每个 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

maven仓库总结,maven私服搭建的更多相关文章

  1. Maven仓库介绍以及私服搭建

      1 什么是Maven? 1.1 Maven的概念 Maven主要服务于基于Java平台的项目构建.依赖管理和项目信息开发,它是一个异常强大的构建工具,能够帮助我们自动化构建过程,从清理.编译.测试 ...

  2. Java-Maven(三):Maven坐标、Maven仓库、Maven生命周期

    之前通过学习对maven命令有了部分了解,但是只是知道maven是用来做什么.但到目前位置还不足以全面的了解maven,为更全面的了解maven,需要学习以下几个概念:Maven坐标.Maven仓库. ...

  3. 国内阿里maven仓库镜像maven配置文件maven仓库速度快

    国内连接maven官方的仓库更新依赖库,网速一般很慢,收集一些国内快速的maven仓库镜像以备用. 最新更新:2016年11月11日 18:05:40 阿里云提供Maven私服,我把配置文件贴一下,自 ...

  4. [转]国内阿里Maven仓库镜像Maven配置文件Maven仓库速度快

    原文地址:http://www.cnblogs.com/ae6623/p/4416256.html 国内连接maven官方的仓库更新依赖库,网速一般很慢,收集一些国内快速的maven仓库镜像以备用. ...

  5. Maven Nexus3 安装,私服搭建

    为啥搭建Maven私服? 如果没有私服,我们所需的所有构件都需要通过maven的中央仓库和第三方的Maven仓库下载到本地,而一个团队中的所有人都重复的从maven仓库下载构件无疑加大了仓库的负载和浪 ...

  6. ava Maven项目之Nexus私服搭建和版本管理应用

    目录: Nexus介绍 环境.软件准备 Nexus服务搭建 Java Maven项目版本管理应用 FAQ 1.Nexus介绍 Nexus是一个强大的Maven仓库管理器,它极大地简化了自己内部仓库的维 ...

  7. Java Maven项目之Nexus私服搭建和版本管理应用

    转载自:https://cloud.tencent.com/developer/article/1010603 1.Nexus介绍 Nexus是一个强大的Maven仓库管理器,它极大地简化了自己内部仓 ...

  8. 如何将本地jar包放入本地maven仓库和远程私服仓库

    1.将本地jar包放入本地仓库.只需执行如下命令即可: mvn install:install-file -Dfile=D:/demo/fiber.jar -DgroupId=com.sure -Da ...

  9. maven仓库镜像、私服与jdk版本配置

    --配置全局镜像,setting.xml <mirrors> <mirror> <id>alimaven</id> <name>aliyun ...

  10. 收集的maven 仓库地址(maven repository)

    maven 仓库地址: 共有的仓库http://repo1.maven.org/maven2/http://repository.jboss.com/maven2/http://repository. ...

随机推荐

  1. servlet后台怎样接收对象參数

    主要思想是用js把对象转换成json.然后把json提交到后台去,后台把这个json字符串转换成map对象 <script type="text/javascript"> ...

  2. MFC自绘控件学习总结第二贴

    首先感谢大家对第一帖的支持,应一些网友烈要求下面我在关于上一贴的一些补充和说明(老鸟可以无视)这一贴是实战+理论不知道第一帖的先看第一帖:http://topic.csdn.net/u/2011071 ...

  3. 通过崩溃地址找错误行数之Delphi版

    通过崩溃地址找错误行数之Delphi版2009-5-11 17:42:35 来源: 转载 作者:网络 访问:360 次 被顶:2 次 字号:[大 中 小]核心提示:什么是 MAP 文件?简单地讲, M ...

  4. java内存模型与线程(转) good

    java内存模型与线程 参考 http://baike.baidu.com/view/8657411.htm http://developer.51cto.com/art/201309/410971_ ...

  5. CSipSimple最新版本号

    要使用CSipSimple有两种方法:第一种是不编译jni,另外一种是编译jni. 这里介绍的是第一种:不编译jni. 首先,用SVNclient检出CSipSimple源代码:svn checkou ...

  6. Hacker News网站的文章排名算法工作原理

    In this post I'll try to explain how Hacker News ranking algorithm works and how you can reuse it in ...

  7. javascript (十三) 函数

    JavaScript 函数语法 函数就是包裹在花括号中的代码块,前面使用了关键词 function: function functionname() { 这里是要执行的代码 } 当调用该函数时,会执行 ...

  8. js检测是否手机浏览的函数

    原文:js检测是否手机浏览的函数 查看一个web应用的时候查看源代码无意发现的,记录一下,万能什么时候能用得着呢! function isMobile() { var mobile = navigat ...

  9. OpenJDK1.8.0 源码解析————HashMap的实现(二)

    上一篇文章介绍了HashMap的一部分的知识,算是为下面HashMap的进一步学习做准备吧. 然后写的时候一直在思考的一个问题是,这方面的知识网上的资料也是一抓一大把,即使是这样我为什么还要花费时间去 ...

  10. 模板的Traits

    Traits含义就是特性,应用Trait模板参数,使得我们的程序既保持灵活性,同时减少类型参数的数量.能够使得我们对函数进行更加细粒度的控制. #ifndef TRAIT_H_ #define TRA ...