【问题标题】:Maven Systempath not working as expectedMaven Systempath 未按预期工作
【发布时间】:2011-10-30 00:14:09
【问题描述】:

我在 pom.xml 中指定了以下依赖项(例如这里提到的一个),它将在指定的 sytemppath 下查找 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 suite 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/main/webapp/WEB-INF/lib/.

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

【问题讨论】:

    标签: maven


    【解决方案1】:

    避免使用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>
    

    【讨论】:

      【解决方案2】:

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

      使用一个 war 项目并在 provided 范围内指定您的依赖项,如果它们已经可用(例如,因为它们是由您的应用程序服务器提供的),否则没有范围规范。 Maven 将负责以正确的方式打包您的项目依赖项,用于 Eclipse 开发和部署到您的应用程序服务器中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-04
        • 2022-01-24
        • 2015-05-11
        • 2020-05-15
        • 2014-10-31
        • 2018-02-12
        相关资源
        最近更新 更多