Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven编译失败,Maven安装成功_Maven_Compilation - Fatal编程技术网

Maven编译失败,Maven安装成功

Maven编译失败,Maven安装成功,maven,compilation,Maven,Compilation,我无法解释为什么在同一个项目上,Maven编译失败,Maven安装成功。上下文:运行Eclipse和m2e,所有内容都在工作区中编译。运行配置>Maven编译失败(未找到符号),但Maven安装成功。因此,我的理解是Maven安装调用Maven编译。Maven编译失败:符号未找到位于.java测试类的祖先类上。有趣的是,在类上执行runas>JUnit测试会显示在同一个祖先类上没有发现编译失败ClassNotFound。你能帮忙吗? -Chuck在eclipse中,所有java文件都从源文件夹编

我无法解释为什么在同一个项目上,Maven编译失败,Maven安装成功。上下文:运行Eclipse和m2e,所有内容都在工作区中编译。运行配置>Maven编译失败(未找到符号),但Maven安装成功。因此,我的理解是Maven安装调用Maven编译。Maven编译失败:符号未找到位于.java测试类的祖先类上。有趣的是,在类上执行runas>JUnit测试会显示在同一个祖先类上没有发现编译失败ClassNotFound。你能帮忙吗?
-Chuck

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

如果您使用maven编译(安装包)进行编译,那么maven只使用范围为compile/provided的库。它不使用任何其他依赖项

你可以做个测试。添加到您的pom中:

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

org.testng
testng
6.8
测验

现在使用src/main/java@Test注释中的一个类。在eclipse中,项目将编译。但是当您运行
mvn clean install
时,将显示编译错误(没有此类类测试)。

从命令行会发生什么?谢谢@ajozwik.,祖先类位于proj dao中的/src/Test/java中。子代正在进行项目测试。Proj test pom.xml将Proj dao pom.xml列为依赖项。Maven compile难道不知道如何查找/编译依赖项吗?请参阅。如果您想使用其他模块中的测试类,必须将其添加为测试依赖项。在祖先项目中添加
groupId>org.apache.Maven.pluginsmaven jar pluginest jar
。在后代添加中:
proj-daofoo1.0test-jartest
谢谢。祖先的项目有一个pom父项目,测试jar元素就在那里。我在后代类的pom中添加了和元素。尽管如此,我还是得到了“找不到符号”。谢谢你的帮助。一定是发生了其他事情。请尝试删除
test
或更改要编译的范围。我从来没有试过。为什么在普通代码中使用测试类?谢谢。实际上,这是一个测试项目想要使用另一个测试项目的组件。我认为你是对的,也就是说,所需的组件没有被编译器jar'ed发现,因此。事实上,在pom中使用元素可能不会直接在项目dao的pom中使用测试jar。嗯-查克