Maven2:在jar路径中使用$ {basedir}

Cla*_*ton 5 java maven-2

我在我的项目中使用外部专有jar.当我在我的pom.xml中对路径进行硬编码时,它可以正常工作:

<dependency>
  <groupId>com.foo.bar</groupId>
  <artifactId>bar</artifactId>
  <version>5.2</version>
  <scope>system</scope>
  <type>jar</type>
  <systemPath>D:\workspace\myproj\external\companyname\lib\proprietary_api.jar</systemPath>
</dependency>
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用$ {basedir}变量时,maven无法找到jar:

<dependency>
  <groupId>com.foo.bar</groupId>
  <artifactId>bar</artifactId>
  <version>5.2</version>
  <scope>system</scope>
  <type>jar</type>
  <systemPath>${basedir}\external\companyname\lib\proprietary_api.jar</systemPath>
</dependency>
Run Code Online (Sandbox Code Playgroud)

pom位于D:\ workspace\myproj中

这也需要跨平台兼容(在Windows上开发,在Linux上部署).

谢谢!

lex*_*ore 5

为您的专有JAR使用系统范围是错误的.您应该将其部署或安装到本地/中央存储库中.


icy*_*com 4

我不确定这是否有帮助,但请尝试使用正斜杠 ( /) 而不是向后\斜杠 ( ) 。另外,尝试使用mvn -eand运行它mvn -X(后者会产生大量调试行) - 这可能会帮助您查明问题。

这是一个例子:

${basedir}以您想要的方式使用。

顺便说一句,为什么不mvn install:install-file使用依赖项而不是使用systemPath?看: