axis2对应jar的maven配备怎么解决
1个回答
展开全部
一、使用Dependency声明
这个方法就是和其他maven的dependency一样,在pom.xml里声明一个dependency:
<dependency>
<groupId>org.ibm</groupId>
<artifactId>jms</artifactId>
<version>1.0.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/jms.jar</systemPath>
</dependency>
细心的人可能已经留意到了,这里多了两个声明:scope和systemPath。
二、创建一个Project范围的库
以上的方法是从避免安装lib到maven库方向上实现。另一种方法就是则是从构造库的方向上考虑的:创建一个虚拟的本地库,让maven到这个本地库里去查找需要的lib。
步骤大致如下:
1. 构造虚拟Maven库
这里我们需要提供一个和maven库结构一样的文件夹/文件结构,以模拟Maven库,例如假如project里lib即是一个maven库,则它的结构可能是:
如上,虚拟库中声明了两个jar:
1. com.ibm.mq-1.0.jar : groupId 是 org.ibm.jms;artifactId是com.ibm.mq;version是1.0
2. com.ibm.mqjms-1.0.jar : groupId是org.ibm.jms;artifactId是com.ibm.mqjms;version是1.0
假设以上jar是可用的maven依赖的话,那在dependency依赖里的添加项为:
<dependency>
<groupId>org.ibm.jms</groupId>
<artifactId>com.ibm.mqjms</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>org.ibm.jms</groupId>
<artifactId>com.ibm.mq</artifactId>
<version>1.0</version>
</dependency>
下面的问题就是如何让Maven能找到这个虚拟Maven库。
在pom.xml里,我们使用repositories声明可能查找的、多个其他的Maven的库,例如:
<repositories>
<repository>
<releases>
<enabled>false</enabled>
<updatePolicy>always</updatePolicy>
<checksumPolicy>warn</checksumPolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
<checksumPolicy>fail</checksumPolicy>
</snapshots>
<id>codehausSnapshots</id>
<name>Codehaus Snapshots</name>
<url>http://snapshots.maven.codehaus.org/maven2</url>
<layout>default</layout>
</repository>
</repositories>
当Maven在Central库里没有找到对应的artifact,则会到这些库里去查找。所以,我们只需要如上把虚拟的Maven库的定义的添加到pom.xml里即可:
Xml代码 收藏代码
<repositories>
<repository>
<id>repo</id>
<releases>
<enabled>true</enabled>
<checksumPolicy>ignore</checksumPolicy>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
<url>file://${project.basedir}/lib</url>
</repository>
</repositories>
这里库的路径是:${project.basedir}/lib 。它是一个release库而不是snapshot库。
区别
方式一:会直接引用指定路径的lib,而不会把它加到本地的Maven库里去,所以它只在当前project使用,但工程可以方便的共享,且不使用额外的空间
方式二:引用的jars会首先被安装到本地的maven库里,然后再通过引用从本地的Maven库里加载,好处是一旦安装,在其他的project也可以引用,但是需要首先在本地安装,当前工程是便携的,但是直接引用而未如上声明的工程可能不是便携的。
这个方法就是和其他maven的dependency一样,在pom.xml里声明一个dependency:
<dependency>
<groupId>org.ibm</groupId>
<artifactId>jms</artifactId>
<version>1.0.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/jms.jar</systemPath>
</dependency>
细心的人可能已经留意到了,这里多了两个声明:scope和systemPath。
二、创建一个Project范围的库
以上的方法是从避免安装lib到maven库方向上实现。另一种方法就是则是从构造库的方向上考虑的:创建一个虚拟的本地库,让maven到这个本地库里去查找需要的lib。
步骤大致如下:
1. 构造虚拟Maven库
这里我们需要提供一个和maven库结构一样的文件夹/文件结构,以模拟Maven库,例如假如project里lib即是一个maven库,则它的结构可能是:
如上,虚拟库中声明了两个jar:
1. com.ibm.mq-1.0.jar : groupId 是 org.ibm.jms;artifactId是com.ibm.mq;version是1.0
2. com.ibm.mqjms-1.0.jar : groupId是org.ibm.jms;artifactId是com.ibm.mqjms;version是1.0
假设以上jar是可用的maven依赖的话,那在dependency依赖里的添加项为:
<dependency>
<groupId>org.ibm.jms</groupId>
<artifactId>com.ibm.mqjms</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>org.ibm.jms</groupId>
<artifactId>com.ibm.mq</artifactId>
<version>1.0</version>
</dependency>
下面的问题就是如何让Maven能找到这个虚拟Maven库。
在pom.xml里,我们使用repositories声明可能查找的、多个其他的Maven的库,例如:
<repositories>
<repository>
<releases>
<enabled>false</enabled>
<updatePolicy>always</updatePolicy>
<checksumPolicy>warn</checksumPolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
<checksumPolicy>fail</checksumPolicy>
</snapshots>
<id>codehausSnapshots</id>
<name>Codehaus Snapshots</name>
<url>http://snapshots.maven.codehaus.org/maven2</url>
<layout>default</layout>
</repository>
</repositories>
当Maven在Central库里没有找到对应的artifact,则会到这些库里去查找。所以,我们只需要如上把虚拟的Maven库的定义的添加到pom.xml里即可:
Xml代码 收藏代码
<repositories>
<repository>
<id>repo</id>
<releases>
<enabled>true</enabled>
<checksumPolicy>ignore</checksumPolicy>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
<url>file://${project.basedir}/lib</url>
</repository>
</repositories>
这里库的路径是:${project.basedir}/lib 。它是一个release库而不是snapshot库。
区别
方式一:会直接引用指定路径的lib,而不会把它加到本地的Maven库里去,所以它只在当前project使用,但工程可以方便的共享,且不使用额外的空间
方式二:引用的jars会首先被安装到本地的maven库里,然后再通过引用从本地的Maven库里加载,好处是一旦安装,在其他的project也可以引用,但是需要首先在本地安装,当前工程是便携的,但是直接引用而未如上声明的工程可能不是便携的。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询