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去完成一个目标

文件结构是这样的

和Gradle比较呢?

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

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

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

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

改变本地依赖仓库路径

<settings>
  ...
  <localRepository>/path/to/local/repo/</localRepository>
  ...
</settings>

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

添加代理

 

  1. <settings>
  2. .
  3. .
  4. <proxies>
  5. <proxy>
  6. <id>example-proxy</id>
  7. <active>true</active>
  8. <protocol>http</protocol>
  9. <host>proxy.example.com</host>
  10. <port>8080</port>
  11. <username>proxyuser</username>
  12. <password>somepassword</password>
  13. <nonProxyHosts>www.google.com|*.example.com</nonProxyHosts>
  14. </proxy>
  15. </proxies>
  16. .
  17. .
  18. </settings>

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

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

  1. <settings>
  2. ...
  3. <mirrors>
  4. <mirror>
  5. <id>UK</id>
  6. <name>UK Central</name>
  7. <url>http://uk.maven.org/maven2</url>
  8. <mirrorOf>central</mirrorOf>
  9. </mirror>
  10. </mirrors>
  11. ...
  12. </settings>

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

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

  1. <settings>
  2. ...
  3. <mirrors>
  4. <mirror>
  5. <id>internal-repository</id>
  6. <name>Maven Repository Manager running on repo.mycompany.com</name>
  7. <url>http://repo.mycompany.com/proxy</url>
  8. <mirrorOf>*</mirrorOf>
  9. </mirror>
  10. </mirrors>
  11. ...
  12. </settings>

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

原型Archetypes

提供的项目模板:

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

quickstart:

webApp:

用法都是一样的

 POM

一个个标签来讲

<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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>Maven Quick Start Archetype</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

project:最顶层的标签

modelVersion:基本上不会更新

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值