maven编译失败,因为我有一个非maven jar

maven编译失败,因为我有一个非maven jar,maven,Maven,我有几个内部库,我不知道如何将它们添加到本地maven存储库中。我已经将它们添加到项目的类路径中,但我的maven编译失败,说明它无法按照预期在外部JAR中找到类: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.0.2:compile (default-compile) on project proj: Compilation failure: Compilation failure

我有几个内部库,我不知道如何将它们添加到本地maven存储库中。我已经将它们添加到项目的类路径中,但我的maven编译失败,说明它无法按照预期在外部JAR中找到类:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.0.2:compile (default-compile) on project proj: Compilation failure: Compilation failure: 
dir\src\main\java\package\MyClass.java:[8,25] package blah does not exist

dir\src\main\java\package\MyClass.java:[9,25] package blah does not exist

dir\src\main\java\package\MyClass.java:[21,12] cannot find symbol
symbol  : variable Blah
location: class package.MyClass

dir\src\main\java\package\MyClass.java:[28,9] cannot find symbol
symbol  : variable Blah
location: class package.MyClass

我如何告诉maven我偷偷添加到项目的类路径中的jar,以便它可以使用它进行编译?

我不确定您是否可以访问系统类路径而不需要大量的黑客攻击。您可以做其他两件事中的一件:系统范围依赖项或将其添加到本地repo

要使用jar,只需为要添加的每个jar添加一个条目。给他们范围系统,并在每个系统中添加一个。像这样的

<dependency>
  <groupId>sun.jdk</groupId>
  <artifactId>tools</artifactId>
  <version>1.5.0</version>
  <scope>system</scope>
  <systemPath>${java.home}/../lib/tools.jar</systemPath>
</dependency>
如果坚持更改位置和编译时,则可以使用-D jvm属性


将它们添加到应用程序中有点痛苦,但这是更长期的解决方案

谢谢,很好用。jar存在于项目中,因此我在将它们添加到本地repo时只使用${basedir}/../jar.jar+1有点麻烦,但更长期的解决方案是答案的一部分。系统依赖性是项目可移植性的消耗。您最好像维护其他依赖项一样维护该依赖项,并在某个时候将其部署到已发布的maven repo中。