一、名词解释
仓库:不同项目调用公用的jar包时,为减轻存储压力以及更新的方便,专门设置一个区域--localRepository(本地仓库)用来储存这些jar包。
首次运行mvn: 运行任何指令都会往仓库中下载jar包,如果下载卡住,使用ctrl+c终止当前命令,重新输入加载即可。
二、快速创建java/web项目
1)dos中转到需要存储项目的目录
2)
创建java项目:mvn archetype:generate
创建web项目:mvn archetype:generate -DarchetypeArtifactId=maven-archetype-webapp
可加参数:-DarchetypeCatalog=internal,设置不与网络交互获得模板增快建项速度。
以下转自http://www.cnblogs.com/yjmyzz/p/3495762.html
[INFO] Generating project in Interactive mode (这里会卡一会儿,因为要联网获取项目模板)
[INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0)
Choose archetype:
1: remote -> br.com.ingenieux:elasticbeanstalk-service-webapp-archetype (A Maven Archetype Encompassing RestAssured, Jetty, Jackson, Guice and Jersey for Publishing JAX-RS-based Services on AWS' Elastic Beanstalk Service)
... (这里会自动列出很多项目模板,每种模板前面会有一个数字序号)
336: remote -> org.apache.maven.archetypes:maven-archetype-quickstart (An archetype which contains a sample Maven project.)
...
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 336: (这里根据每个人机器上安装的eclipse插件不同,可能默认的数字不是这个,先不管,直接回车)
Choose org.apache.maven.archetypes:maven-archetype-quickstart version:
1: 1.0-alpha-1
2: 1.0-alpha-2
3: 1.0-alpha-3
4: 1.0-alpha-4
5: 1.0
6: 1.1
Choose a number: 6: (直接回车)
Define value for property 'groupId': : cnblogs (可暂时先理解成类似package或namespace的名称,通常我们填写组织机构名称缩写)
Define value for property 'artifactId': : maven-hello-world (组件名称,可暂时理解成项目名称)
Define value for property 'version': 1.0-SNAPSHOT: : (版本号,直接回车,默认1.0-SNAPSHOT)
Define value for property 'package': cnblogs: : (打包后的jar文件名,相当于.net中项目最后生成的程序集dll名称)
Confirm properties configuration:
groupId: cnblogs
artifactId: maven-hello-world
version: 1.0-SNAPSHOT
package: cnblogs
Y: : (直接回车确认)
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-quickstart:1.1
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: cnblogs
[INFO] Parameter: packageName, Value: cnblogs
[INFO] Parameter: package, Value: cnblogs
[INFO] Parameter: artifactId, Value: maven-hello-world
...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS (看到这个,表示项目创建成功!)
[INFO] ------------------------------------------------------------------------
3)进入下级目录,查看tree
C:.
├───src
│ ├───main
│ │ └───java
│ │ └───cnblogs
│ └───test
│ └───java
│ └───cnblogs
└───target
└───classes
└───cnblogs
注意上面带红色的目录名,maven项目采用“约定优于配置”的原则,src/main/java约定用于存放源代码,src/main/test用于存放单元测试代码,src/target用于存放编译、打包后的输出文件。这是全世界maven项目的通用约定,请记住这些固定的目录结构。
4)编译
mvn compile
编译完成自动在target下生成class文件
5)测试
mvn test
6)打包
mvn package
java项目在target目录下生成一个jar包。web项目在target目录下生成一个war包。
7)项目运行
①web项目运行
把打包生成的war包加入Tomcat目录下的webapps文件夹里,在浏览器中输入http://localhost:8080/war包名/即可看到创建的web项目。
②java项目运行
没有main方法的class文件运行:打开项目根目录下的pom.xml,
在</project>前增加内容:
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<executable>java</executable>
<arguments>
<argument>-classpath</argument>
<classpath>
</classpath>
<argument>cnblogs.App</argument>
</arguments>
</configuration>
</plugin>
</plugins>
</build>
三、简单汇总mvn功能
打包:mvn package
编译:mvn compile
编译测试程序:mvn test-compile
清空:mvn clean
运行测试:mvn test
生成站点目录: mvn site
生成站点目录并发布:mvn site-deploy
安装当前工程的输出文件到本地仓库: mvn install