【问题标题】:Maven compile fails, Maven install succeedsMaven编译失败,Maven安装成功
【发布时间】:2012-12-17 19:58:26
【问题描述】:

我无法解释为什么我的 Maven 编译 失败而 Maven 安装 在同一个项目上成功。上下文:运行 Eclipse 和 m2e,一切都在工作空间中编译。运行配置 > Maven 编译失败(未找到符号)但 Maven 安装成功。所以,我的理解是 Maven 安装调用了一个 Maven 编译。 Maven 编译失败:symbol not found 在 .java 测试类的祖先类上。有趣的是,对类执行 run as > JUnit 测试显示在同一个祖先类上编译失败 ClassNotFound。你能帮我吗? - 查克

【问题讨论】:

  • 命令行会发生什么?

标签: maven compilation


【解决方案1】:

在 Eclipse 中,所有 java 文件都从源文件夹编译到 target/classes(可以更改)。 Eclipse 用于编译所有类 - 从具有所有范围(编译、测试、提供等)的 pom 和其他项目(检查您的项目是否依赖于工作区中的其他打开)。 当您运行maven install 时,maven 检查是否所有类都已编译并创建 jar 包。它不知道类是如何编译的?通过 maven 还是通过 eclipse?

如果您通过 maven compile(安装包)进行编译 - maven 仅使用具有 compile/provided 范围的库。它不使用任何其他依赖项。

您可以进行测试。添加到您的 pom 中:

 <dependency>
      <groupId>org.testng</groupId>
      <artifactId>testng</artifactId>
      <version>6.8</version>
      <scope>test</scope>
    </dependency>

现在在 src/main/java @Test 注释中的一个类中使用。在eclipse项目中会编译。但是当你运行mvn clean install时会显示编译错误(No such class Test)。

【讨论】:

  • 谢谢@ajozwik。祖先类在 proj-dao 的 /src/test/java 中。后代正在项目测试中。 Proj-test pom.xml 将 proj-dao pom.xml 列为依赖项。 Maven compile 不知道如何查找/编译依赖项吗?
  • Guide to using attached tests。如果你想使用其他模块的测试类,你必须将它添加到测试依赖项中。在祖先项目中添加&lt;build&gt;&lt;plugins&gt;&lt;plugin&gt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;&lt;artifactId&gt;maven-jar-plugin&lt;/artifactId&gt;&lt;executions&gt;&lt;execution&gt;&lt;goals&gt;&lt;goal&gt;test-jar&lt;/goal&gt;&lt;/goals&gt;&lt;/execution&gt;&lt;/executions&gt;&lt;/plugin&gt;&lt;/plugins&gt;&lt;/build&gt;。在后代中添加:&lt;dependency&gt;&lt;groupId&gt;proj-dao&lt;/groupId&gt;&lt;artifactId&gt;foo&lt;/artifactId&gt;&lt;version&gt;1.0&lt;/version&gt;&lt;type&gt;test-jar&lt;/type&gt;&lt;scope&gt;test&lt;/scope&gt;&lt;/dependency&gt;跨度>
  • 谢谢。祖先的项目有一个 pom 父项,并且 test-jar 元素在那里。我在后代类的 pom 中添加了 元素。不过,我得到“找不到符号”。谢谢您的帮助。一定有其他事情发生。
  • 尝试删除 &lt;scope&gt;test&lt;/scope&gt; 或更改范围以进行编译。我从来没有试过。为什么在普通代码中使用测试类?
  • 谢谢。实际上,这是一个测试项目想要使用来自另一个测试项目的组件。我认为您是对的,即所需的组件没有被编译器发现,因此。事实上,在 pom 中包含 元素可能不会将 test-jar 指向 proj-dao 的 pom。嗯。 - 查克
猜你喜欢
  • 2011-09-27
  • 2011-03-09
  • 1970-01-01
  • 1970-01-01
  • 2018-11-22
  • 1970-01-01
  • 2019-07-22
相关资源
最近更新 更多