今天非常奇怪,我的程序,找不到引用的库,但是又可以正确执行。
后来,发现引用的库在下面文件夹下面
但是程序又是为什么会去这个文件夹下面找呢?
原来是在maven里面配置的这个路径。
另外******************整个库的关系,是在一个叫pom.xml的文件里面编写的**************************
如下图:
下面分析一下协议关键字段
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
dependency :表示依赖
groupId:其实就是某个文件夹,指某个大项目的名称
看下图
artifactId:表示子项目 如下图
version:版本号
看如下:
这里和我的配置文件是可以对应上的
总结:依赖关系其实就是通过groupId+artifactId+version 来定位到某个jar库,我们可以这么类比主文件夹+子文件夹+版本文件夹,其实落到实处就是3个文件夹而已
这里又有个疑惑,到底我的这些库是哪里来的呢?
https://search.maven.org/search
就是这个网址
我们需要的库都是在这个里面下载的。
我们还是以com.alibaba fastjson这个库为例
看上图,是不是就和我们的配置文件就对应起来了。
再看下面这一段:他的意思是我下载包的时候,从http://maven.aliyun.com/nexus/content/groups/public/
阿里下载
<repositories>
<repository>
<id>public</id>
<name>aliyun nexus</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
下载插件也从阿里下载
<pluginRepositories>
<pluginRepository>
<id>public</id>
<name>aliyun nexus</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
****************************POM.xml使用资料****************
http://maven.apache.org/ref/3.6.1/maven-model/maven.html
上面是官网的介绍,我们可以参考使用
截个图,表示这个文档很好用
将项目依赖的库统一放置到lib目录下
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>