【问题标题】:maven compile fails because i have a non-maven jarmaven 编译失败,因为我有一个非 maven jar
【发布时间】:2010-05-14 01:34:35
【问题描述】:

我有几个内部库,我还没有/不知道如何添加到我的本地 maven 存储库。我已将它们添加到项目的类路径中,但我的 maven-compile 失败,指出它无法在外部 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,以便它可以使用它进行编译?

【问题讨论】:

    标签: maven


    【解决方案1】:

    我不确定您是否可以访问系统类路径而无需大量黑客攻击。您可以做另外两件事之一:系统范围依赖或将其添加到本地存储库。

    要使用system dependency,只需为您要添加的每个 jar 添加一个条目。给他们范围“系统”并为每个添加一个<systemPath>。像这样。

    <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 属性。

    将它们添加到local repo 有点麻烦,但更长期的解决方案。

    【讨论】:

    • 谢谢,工作正常。 jar 存在于项目中,所以我只使用${basedir}/.../jar.jar
    • +1 关于“将它们添加到本地 repo 有点痛苦,但更长期的解决方案”是答案的一部分。系统依赖会消耗项目的可移植性。你会更好地维护这种依赖关系,就像你做任何其他事情一样(并在某个时候将其部署到已发布的 maven 存储库)。
    猜你喜欢
    • 1970-01-01
    • 2018-01-02
    • 2018-11-22
    • 1970-01-01
    • 2011-11-17
    • 2019-07-22
    • 1970-01-01
    相关资源
    最近更新 更多