美文网首页
maven速学 多项目联合构建 聚合 继承并运行

maven速学 多项目联合构建 聚合 继承并运行

作者: 在路上phper | 来源:发表于2018-01-22 15:19 被阅读29次

为了演示多项目联合构建 我们把项目目录结构加了一个包
目录结构如下

image.png
建立com.jtthink包后将代码拉到包下 idea会自动将包引用到代码中
运行代码 可以正常运行如下
image.png
运行maven时,控制台输出一堆info信息 如何让其只显示输出内容和error呢
来到项目目录 在终端中输入
mvn -h
输出如下
image.png
可以看到 mvn -q 是只显示内容和error的
image.png
这时我们在run-editconfigration中 command line中test 后面加入 -q
如下图
image.png
再次运行 可以看见控制台内容如下
image.png
接下来演示主项目中引用另外一个项目的jar包
为了演示 我们在项目目录下创建个c2文件夹如下
image.png
假设我们有下面这样的需求 我们想在c1项目的MyIndex中引用外部类库的一个项目或者jar包 我们不想在改变代码之后还需要手动将jar包加入到library当中 使项目不一致 想要使用maven的方式 将jar包放入中央仓库地址中
接下来我们来到idea
file-new-project
image.png
image.png
在弹出的窗口中选择maven项目-点击next
输入groupid等信息如下图
image.png
点击next输入项目名称和项目保存目录如下
image.png
点击finish 这时idea会提示新项目打开方式我们选择一个new window
会看见我们会打开两个idea项目
image.png
我们在c2项目中的java目录下创建一个Me.java实体类 供MyIndex调用
代码如下
image.png
定义两个变量 然后 alt+insert快捷键生成构造函数以及get set函数
上一节我们讲到maven生命周期
讲到test生命周期 执行这个命令 会包括 compile和 process-resources这个过程
那么mvn package的作用是什么呢?
这个是用来将我们得程序打包的 这个需要和我们的配置文件有关系
配置文件中有个<packaging></packaging>配置节
里面可以写打包的格式有jar war 和pom 默认为jar如下
image.png
接下来我们来到c2项目目录下 用命令的方式执行打包
image.png
image.png
cmd里可以看到如下内容
项目目录中出现 我的名字的一个jar的包
image.png
那么我们想将这个生成的jar包拷贝到本地仓库怎么办?
这时我门用到install命令 这个命令包括编译运行打包并且将生成的jar包拷贝到本地仓库中
我们将项目下的jar包删除后执行下面命令
如下mvn install
这时我们得本地仓库目录如下
image.png
以上为通过命令的方式快速将我们的项目变成jar并且进入到本地仓库
接下来如何在MyIndex项目中引用呢?
直接在pom文件中加入依赖即可
代码如下
<dependency>
<groupId>com.jtthink</groupId> //包名
<artifactId>bhc</artifactId> //项目名
<version>1.0-SNAPSHOT</version> //版本号
</dependency>
保存以后导入依赖会在项目目录中出现jar包如下
image.png
接下来在MyIndex文件中使用Me.java
image.png
这时报找不到Me这个文件
原因是我们在c2项目中没有创建包
来到c2项目文件
创建com.jtthink.bhc包并且将Me.java拖入包中
如下
image.png
然后重新执行mvn install
再回到MyIndex中引用
Me me = new Me("bhc"); (需要alt+enter引入类)
System.out.println(me.getName());
然后运行
image.png
结果出现bhc
以上为另外一个项目变成jar放到本地仓库引用
我们可以发现这个并不是我们想要的 因为我们每次修改c2项目中的Me.java文件 都需要mvn install 一下 拷贝到本地仓库使代码为最新的
否则引用不到最新的代码
接下来我们学习一下多项目联合构建
当Me.java发生修改的时候 MyIndex可以不做修改
接下来为了演示 我们创建一个parent文件夹
目录如下
image.png
上面说到packageing的参数有pom 其作用为创建聚合项目时所需的参数
此目录为c1和c2聚合项目的空文件夹位置
接下来创建一个聚合项目
三个项目如下
聚合项目和上面c2项目创建步骤一致
image.png
聚合项目的主体里 src目录是不需要的 别的不需要动
只需要修改pom文件
加入packageing配置节 填入pom选项
image.png
项目的聚合需要modules配置
此时parent目录结构为
image.png
配置代码如下
image.png
保存导入配置
这时parent目录变为
image.png
这个为c1和c2项目的聚合
接下来运行需要在run中配置一些参数
注意这三个项目中settings里面的maven地址必须相同
image.png
接下来修改Me.java里面的文件内容如下
image.png
运行parent
image.png
editconfiguration配置一个maven项 如上 保存 运行
结果如下
image.png
可以看见名字前面加上了test没有需要执行mvn install命令
并且三个项目进行了联合编译
这里parent是一个母体 协调另外两个项目之间的关系
接下来学一下继承
如果想在c2项目里也使用jsoup这个类库怎么办?
有两种办法
1.将jsoup依赖代码拷贝到c2项目pom文件中
2.通过parent标签写入到pom文件中
下面演示parent标签方式
image.png
然后就可以在c2中使用jsoup类了

相关文章

  • maven速学 多项目联合构建 聚合 继承并运行

    为了演示多项目联合构建 我们把项目目录结构加了一个包目录结构如下

  • Maven学习(四) Maven 聚合 继承 单继承

    Maven学习(四) Maven 聚合 继承 单继承 聚合 Maven聚合:一个Maven项目,用来管理它的mav...

  • Java工程搭建方案 - Jenkins(Jar打包到docke

    上一篇文章讲了使用Maven的聚合与继承构建微服务模块,并写了个helloworld demo在本地运行了起来,代...

  • 3年java开发面试BAT,你必须彻底搞定Maven!

    前言 现在的Java项目中,Maven随处可见。 Maven的仓库管理、依赖管理、继承和聚合等特性为项目的构建提供...

  • 聚合与继承

    基本概念 Maven的聚合特性能够把项目的各个模块聚合在一起构建,而Maven的继承特性则能帮助抽取各模块相同的依...

  • Maven核心知识

    前言 Java领域,可以说Maven随处可见。Maven的仓库管理、依赖管理、继承和聚合等特性为项目的构建提供了一...

  • Maven实战之聚合

    Maven实战之聚合 聚合特性 Maven的聚合特性,指的是把项目中的各个模块聚合在一起构建,举个例子来说,有多个...

  • Java工程搭建方案 - Maven

    本篇讲讲Maven在实际项目中的应用,包含 Maven继承和聚合 微服务项目划分 Maven仓库配置和顺序 Mav...

  • 聚合与继承

    Maven的聚合特性能够把项目的各个模块聚合在一起构建,而继承特性则能够帮助抽取各模块相同的依赖和插件等配置,在简...

  • hadoop mvn 开发实战

    一,目的:编写并运行 hdfs 程序 1,使用 maven 构建项目。从 c/c++ 过来的同学,比较习惯 使用 ...

网友评论

      本文标题:maven速学 多项目联合构建 聚合 继承并运行

      本文链接:https://www.haomeiwen.com/subject/ckclaxtx.html