Java学习之路 Maven

创建工程 

  1. mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false

 archetype是一个插件plugin,其作用是原型,也就是模板,generate->goal相当于gradle里的task,后面是一串参数,插件提供了很多goal去完成一个目标

文件结构是这样的

Java学习之路 Maven_第1张图片

和Gradle比较呢?

源代码目录是一样的,src->main/test->java->自己的包名->.java文件

可是在根目录下,maven要简洁得多,就一个pom.xml:

Java学习之路 Maven_第2张图片

gradle有本身的两个配置文件加上wrapper文件夹、.gradle文件夹,总的来说要比maven繁琐很多(即使如此在版本控制和依赖上也比手工管理工程要好很多)

理所当然的,pom.xml可没那么好配置,相比gradle

下面build工程

  1. mvn package

package不是一个goal,他是一个phase----阶段-----构筑生命周期的一步,一个阶段可能包含很多子阶段,maven会执行所有包含的子阶段,最终---这些子阶段还是执行一些goal来实现目的。

生命周期:

  • validate: validate the project is correct and all necessary information is available    验证
  • compile: compile the source code of the project    编译
  • test: test the compiled source code using a suitable unit testing framework. These tests should not require the code be packaged or deployed     测试
  • package: take the compiled code and package it in its distributable format, such as a JAR.     打包
  • 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  再验证
  • install: install the package into the local repository, for use as a dependency in other projects locally   安装包,使其作为其他项目的依赖
  • deploy: done in an integration or release environment, copies the final package to the remote repository for sharing with other developers and projects.     部署发行

额外的周期:

  • clean: cleans up artifacts created by prior builds 清理上一次build的结果
  • site: generates site documentation for this project   生成site文档

执行:

-cp是声明依赖路径

phrase和goal是可以队列的形式执行下去的

  1. mvn clean dependency:copy-dependencies package

 site能生成项目过程中的详细信息,类似scan

一个团队Maven项目除了可以自动化地保持各种依赖版本一致,当然也可以给团队中的个人提供个性化配置,比如本地依赖仓库的位置、代理、镜像

个人设置的路径:

${user.home}/.m2/settings.xml

该文件不是必须的,所以要自己创建。

改变本地依赖仓库路径


  ...
  /path/to/local/repo/
  ...

 这里的仓库指的是maven去检查是否本地已经存在正确版本依赖的路径,换句话说,就是缓存区。

添加代理

 

  1. .
  2. .
  3. example-proxy
  4. true
  5. http
  6. proxy.example.com
  7. 8080
  8. proxyuser
  9. somepassword
  10. www.google.com|*.example.com
  11. .
  12. .

之前说过,命令行下的下载即使全局代理也没用,必须在环境变量处添加代理,这显然不够灵活,而个人配置给了我们一个解决方案。

如果在公司没有代理供你使用咋办呢?----可以更改镜像

  1. ...
  2. UK
  3. UK Central
  4. http://uk.maven.org/maven2
  5. central
  6. ...

这里的mirrorOf就是镜像仓库的简称

如果想要设置所有需要的仓库镜像:

  1. ...
  2. internal-repository
  3. Maven Repository Manager running on repo.mycompany.com
  4. http://repo.mycompany.com/proxy
  5. *
  6. ...

这里的*就是说,所有的依赖、插件所需要的仓库,都来这个mirror下载

原型Archetypes

提供的项目模板:

Java学习之路 Maven_第3张图片

这里我们只关注quickstart和webapp两个

quickstart:

Java学习之路 Maven_第4张图片

webApp:

Java学习之路 Maven_第5张图片

用法都是一样的

 POM

一个个标签来讲


  4.0.0
  com.mycompany.app
  my-app
  jar
  1.0-SNAPSHOT
  Maven Quick Start Archetype
  http://maven.apache.org
  
    
      junit
      junit
      4.11
      test
    
  

project:最顶层的标签

modelVersion:基本上不会更新

gourpId:基本上就是公司域名,是和其他公司区分的标志,而且工程也会自动根据这个Id创建源码路径

 

你可能感兴趣的:(Java,Learning)