Maven实战总结(1)

pom: project object model 项目对象模型

1, dependencies 标签

2, properties标签: 管理属性

dependency标签

补充: maven在下载依赖的时候,会把指定依赖包所依赖的包下载下来

3, build标签: 指定如何构建当前项目

source : 指定当前构建的source目录

plugin: 指定构建时使用的插件

4, packing: 指定当前构建项目的类型

补充: pom是可以继承的

5, maven插件 plugins

maven实际是依赖插件执行的框架,每个任务都是由插件执行的.

两种类型:

build plugins: 在构建时执行,需要在pom.xml中配置

reporting plugins: 在网站生成过程中执行,也需要在pom.xml中配置.

Maven 创建自定义原型 以及 报错 "Invoker process ended with result different than 0!" 解决方案-CSDN博客

6, maven之archetype(骨架)

可以实现基于某个项目快速进行复制重新构建

将某个项目A作为骨架方便其他项目复制直接生成时步骤:

1, 在项目A中build标签下定义插件:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-archetype-plugin</artifactId>
    <version>3.2.1</version>
</plugin>

2, 可在项目A目录下执行:

mvn archetype: create-from-project

执行完该命令后会在项目A的target目录下生成一个模型骨架项目

然后在target目录下的archetype下执行 mvn install 即可 骨架在本地生效

3, 在某个目录下执行以下命令,按照demo2骨架来生成新项目:

mvn archetype:generate

-DgroupId=com.project.li

-DartifactId=demo3

-Dversion=1.0.0-SNAPSHOT

-Dpackage=com.project.li

-DarchetypeGroupId=com.example.magic

-DarchetypeArtifactId= demo2-archetype

-DarchetypeVersion=0.0.1-SNAPSHOT -B

-DarchetypeCatalog=local

-DinteractiveMode=false

  mvn archetype:generate
 -DgroupId=com.project.li         #新建项目的工程名
 -DartifactId=demo3           #要创建的项目名称
-Dversion=1.0.0-SNAPSHOT              #要创建的项目的版本号
-Dpackage=com.project.li         #要创建的项目的基础包名

-DarchetypeGroupId=com.example.magic       #./m2下的xml里的
-DarchetypeArtifactId= demo2-archetype   #./m2下的xml里的
-DarchetypeVersion=0.0.1-SNAPSHOT      #./m2下的xml里的
 -B
-DarchetypeCatalog=local               #从本地仓库选取模板
-DinteractiveMode=false

或者 执行一个Java程序执行:

String groupId = "com.project.li";
String artifactId = "demo4";
String version = "1.0.0-SNAPSHOT";
String packaged = "com.project.li";
String command = "mvn archetype:generate"
        + " -DgroupId="+ groupId
        + " -DartifactId="+ artifactId
        + " -Dversion="+ version
        + " -Dpackage="+ packaged
        + " -DarchetypeGroupId=com.example.magic"
        + " -DarchetypeArtifactId=demo2-archetype"
        + " -DarchetypeVersion=0.0.1-SNAPSHOT"
        + " -B"
        + " -DarchetypeCatalog=local"
        + " -DinteractiveMode=false";
File file=new File("/Users/lizhihao");
//#通过模板进行创建项目
Runtime.getRuntime().exec(command,null,file);

-----------------------------------------------------------------------------------------------------

1,modelVersion - 

modelVersion 指定 pom.xml 符合哪个版本的描述符。maven 2 和 3 只能为 4.0.0

参照:Maven 教程之 pom.xml 详解 - 知乎

2,optional:当出现多项目互相依赖、有父子依赖传递时,如果需要选择性的依赖某些包时可使用optional,防止maven依赖传递时强制依赖父pom的所有jar包,造成项目包很多,加载过慢。

参照:https://www.cnblogs.com/FraserYu/p/11796301.html

3,dependencyManagement:一般用于 父类pom中,即在父类pom中定义依赖包及版本,子模块会自动继承(注:子模块中不能定义版本号,否则会覆盖掉父类的依赖)

参照:https://www.cnblogs.com/feibazhf/p/7886617.html

4,issueManagement:项目的问题管理系统(Bugzilla, Jira, Scarab,或任何你喜欢的问题管理系统)的名称和URL。

5,ciManagement:项目持续集成信息

6,developer:某个项目开发者的信息

7,scm(Source Control Management):配置的代码仓库,供Maven站点和其他插件使用。

8,distributionManagement:项目分发信息,在执行mvn deploy后表示要发布的位置。有了这些信息就可以把网站部署到远程服务器或者把构件部署到远程仓库。

参照:https://www.cnblogs.com/yangzhilong/p/4329336.html

9,maven在多模块项目时会使用到 packaging标签,需要注意的是,如果使用pom,则在进行编译时不会生成resources下的配置文件,可能导致程序报错,所以一般pom用来设置聚合工程(即专门用来管理包的父项目),子项目模块一般都需要设置成jar。

  • 21
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Loren_云淡风轻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值