Maven Systempath没有按预期工作

时间:2011-08-18 17:33:13

标签: maven

我在pom.xml中指定了以下依赖项(例如在此提到),它将在指定的sytempath下查找saaj.jar,而Maven用于从同一路径中选择它并正常工作。

<dependency>
<groupId>saaj</groupId>
<artifactId>saaj</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/saaj.jar</systemPath>
</dependency>

现在我已经转移到了Windows 7和Spring Tool套件2.7.1版本(以前的Win XP和Spring旧版本)。在这个新设置中,我遇到了错误。

Missing artifact saaj:saaj:jar:1.0:system 

现在,它正在寻找saaj-1.0.jar而不是saaj.jar并在$ {basedir} /src/main/webapp/WEB-INF/lib/saaj/saaj/1.0/文件夹下而不是$ { BASEDIR} / SRC /主/ web应用/ WEB-INF / lib中/.

为什么会这样?请提供我以前的设置应该正常工作的解决方案。

2 个答案:

答案 0 :(得分:0)

不要使用system范围。它适用于 system 提供的库。鉴于您为此提供的路径,您显然正在创建一个Web应用程序。

使用war项目并指定具有provided范围的依赖项(如果它们已经可用)(例如,因为它们由应用程序服务器提供),或者没有范围规范。 Maven将以正确的方式处理您的项目依赖性,包括Eclipse开发和应用程序服务器中的部署。

答案 1 :(得分:0)

避免使用systemPath,您必须创建一个本地存储库,例如:

这是您的pom文件:

<repositories>
    <repository>
        <id>local-repo</id>
        <url>file://${basedir}/lib</url>
    </repository>
</repositories>


    <dependency>
      <groupId>tiago.medici</groupId>
      <artifactId>eureka</artifactId>
      <version>0.0.1</version>
    </dependency> 

在项目上,您将创建一个lib文件夹,以放置

生成的jar和maven pom文件
mvn install:install-file -Dfile=c:\tiago.medici-0.0.1.jar -DgroupId=tiago.medici -DartifactId=eureka -Dversion=0.0.1 -Dpackaging=jar

tiago.medici-0.0.1.pom

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>tiago.medici</groupId>
  <artifactId>eureka</artifactId>
  <version>0.0.1</version>
  <description>POM was created from install:install-file</description>
</project>