Maven依赖的是本地工程还是仓库jar包

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Maven依赖的是本地工程还是仓库jar包相关的知识,希望对你有一定的参考价值。

  相信大家都碰见过 maven 配置的依赖或者是 jar 包或者是工程,在开发的过程当中,当然需要引入的是工程,这样查看 maven 依赖的文件的时候,就能直接查看到源码。
  一、本地工程依赖
  举个例子,其架构如下所示(以下均使用eclipse中m2eclipse插件进行演示)——
  此时,这里依赖的“dependency-to-hello”指代的是eclipse工作空间中的工程,这样,直接源码依赖的便是工作空间里的源码,这样很方便,也是需要的。会注意到,所依赖的“dependency-to-hello”工程,并没有显示其路径,也就是默认的工作空间的地址。
  那么,什么时候maven依赖的是仓库(本地仓库或远程仓库)中的jar包呢?
  二、(本地/远程)仓库jar包依赖
  很简单的方法之一,直接把“dependency-to-hello”工程关闭掉(close project),这样,就得到这样一个视图——
  会看到,此时maven依赖的正是对应“dependency-to-hello”工程的jar文件,并且,后面的路径显示是从maven仓库里面取的。
  三、工程依赖及仓库依赖的转换
  OK,现在还原之,我们将工程“dependency-to-hello”打开,会看到对应的maven依赖又变回原来的工程依赖了。
  需要说的是,当重新打开工程“dependency-to-hello”的时候,hello工程并没有出现红色感叹号,也就是无须做“update dependencies”等的更新maven依赖等操作。
  从这里,我们就能够看出来——m2eclipse首先查看是否能够从本地工程库中得到对应的maven依赖,如何存在,则将本地工程依赖进来;如何不存在,则从本地仓库/远程仓库中加载解析对应的jar包依赖。
参考技术A 问题不清楚,maven可以依赖本地项目,也同时依赖-》依赖项目的jar包。本回答被提问者采纳

maven怎么导入本地jar包

直接写pom.xml在本地仓库中创建文件夹就Ok了
例如:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>1.1.1</version>
</dependency>
在本地仓库中创建javax\\servlet\\servlet-api\\1.1\\文件夹下添加jar就ok
参考技术A 手动添加Jar包到我们的Maven项目中。
1、首先我在项目根目录中创建一个lib文件夹,将jar包拷贝到lib文件夹下

2、然后我们在maven的pom.xml中配置
<groupId>org.wltea.analyzer</groupId>
<artifactId>IKAnalyzer</artifactId>
<version>2012FF_u1</version>
<scope>system</scope>
<systemPath>$project.basedir/lib/IKAnalyzer2012FF_u1.jar
</systemPath>

eg.我在本地添加的源码

<!-- npl本地so -->
<dependency>
<groupId>com.netease.npl</groupId>
<artifactId>npl</artifactId>
<version>0.0.1</version>
<scope>system</scope>
<systemPath>$project.basedir/lib/QASystem.jar
</systemPath>
</dependency>
<dependency>
<groupId>edu.stanford.nlp</groupId>
<artifactId>nlp</artifactId>
<version>3.5.2</version>
<scope>system</scope>
<systemPath>$project.basedir/lib/stanford-segmenter-3.5.2.jar
</systemPath>
</dependency>

3、这里的groupId和artifactId以及version都是可以随便填写的 ,scope必须填写为system,而systemPath我们现在我们jar包的地址就可以了
4、最后我们必须在maven打包的过程中加入我们这个jar包。因为项目运行的时候需要这个Jar,并且我们得拷贝在WEB-INF/lib目录下

<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webResources>
<resource>
<directory>$project.basedir/lib</directory>
<targetPath>WEB-INF/lib</targetPath>
<filtering>false</filtering>
<includes>
<include>**/*.jar</include>
</includes>
</resource>
</webResources>
</configuration>
<version>2.1.1</version>

eg 我在本地添加的源码

<!-- 加载本地jar包 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webResources>
<resource>
<directory>$project.basedir/lib</directory>
<targetPath>WEB-INF/lib</targetPath>
<filtering>false</filtering>
<includes>
<include>**/*.jar</include>
</includes>
</resource>
</webResources>
</configuration>
<version>2.1.1</version>本回答被提问者采纳

以上是关于Maven依赖的是本地工程还是仓库jar包的主要内容,如果未能解决你的问题,请参考以下文章

转:MAVEN依赖的是本地工程还是仓库JAR包?

如何把一个jar包打包到本地maven仓库

3.将maven项目jar纳入maven仓库,Mave项目依赖另外一个Maven项目的案例

maven工程依赖的jar包,在本地仓库有,但是pom.xml文件却报错找不到jar包

maven项目 模块化开发 引用的类修改了代码,jar包的引用问题

二.创建maven工程及下载需要的jar包