如何查看maven依赖的jar是如何引入的?
maven引入的jar文件如果还依赖于其他的jar文件,那么关联的jar也会引入。有时我们需要知道某个jar包哪个jar包引入的,那么下面的方法会起到作用。
- 利用idea可以查看依赖树并且快速查找引入的jar文件,可以按照下图中操作。
-
使用mvn dependency:tree命令查看依赖树,如下所示。
[INFO] ------------------------------------------------------------------------ [INFO] Building algorithm 1.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ algorithm --- [INFO] com.huawei.learn:algorithm:jar:1.0-SNAPSHOT [INFO] \- org.springframework:spring-context:jar:5.1.6.RELEASE:compile [INFO] +- org.springframework:spring-aop:jar:5.1.6.RELEASE:compile [INFO] +- org.springframework:spring-beans:jar:5.1.6.RELEASE:compile [INFO] +- org.springframework:spring-core:jar:5.1.6.RELEASE:compile [INFO] | \- org.springframework:spring-jcl:jar:5.1.6.RELEASE:compile [INFO] \- org.springframework:spring-expression:jar:5.1.6.RELEASE:compile [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------
也可以添加参数output指定输出文件,便于在编辑器中分析,如mvn dependency:tree -Doutput=*.txt
maven使用模板创建项目?
maven提供多个超过1000个模板方便我们创建项目,使用模板能够减少我们很多工作量。
使用模板有两种方式。
-
在命令行执行命令创建maven项目
- mvn archetype:generate;
- 选择模板,比如maven-archetype-quickstart;
- 输入goupId,artifactId,version,package信息。
- 在IDEA中使用模板创建maven项目,较为简单,直接跟着指导一步一步走就可以了。
示例:使用maven-archetype-quickstart可以快速创建一个目录结构如下的Java项目。
└─demo
└─src
├─main
│ └─java
│ └─com
│ └─learn
└─test
└─java
└─com
└─learn
maven如何做多模块开发?
-
创建如下目录结构
. │ pom.xml ├─Api │ │ pom.xml │ └─src │ ├─main │ │ ├─java │ │ └─resources │ └─test │ └─java ├─Service │ │ pom.xml │ └─src │ ├─main │ │ ├─java │ │ └─resources │ └─test │ └─java └─Website │ pom.xml └─src ├─main │ ├─java │ └─resources └─test └─java
-
配置pom文件。通常我们在最外层的pom文件中管理做依赖管理,如用到的jar包的版本号。需要maven认识到Api,Service,Website是项目的模块,需要在外层pom文件配置module标签,如下:
<modules> <module>Api</module> <module>Service</module> <module>Website</module> </modules>
而我们需要在模块中配置相应模块的依赖等信息。
这里有一个问题:假如你将项目的接口放在一个模块中,而实现放在另外一个模块中;比如将一个web服务所有的接口
全放在模块Api中,而在模块Service中实现接口,这时是不能直接引用到模块Api中的接口的——毕竟模块的主要
作用是为了解耦,如果能随便引用到,那模块的意义将不再存在!
那怎么办呢?
此时我们可以将Api模块打包为jar文件,并执行maven的install命令将这个jar包放到maven仓库中,然后我们在
Service模块的pom文件引用这个jar包,这样就可以实现Service引用Api模块中定义的接口了。
指定JDK的版本
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。