我有一个maven项目,实际上构建为多个java项目。项目B包含一个类,它是一个类sin项目A的子类。当我尝试在调试器中运行此类时,当方法尝试从其父级调用任何功能时,我得到NoSuchMethod错误。
Maven设置旨在编译每个项目并将其放置在maven存储库中,以便其他项目可以找到它们(它具有依赖感,因此它构建了pre-req项目的第一个)。这对于部署来说都很有用,但是我不想强迫人们在eclipse中调试每次启动调试器时都进行maven安装。相反,我尝试将pre-req项目添加到适用项目的类路径(构建路径 - >添加类文件夹)。这不起作用。我认为是因为我的构建路径中有maven存储库和类路径?但是应该强制解析类文件夹,并且应该在maven安装之前解析更新的类文件夹吗?
如何配置此功能而无需每次都重新进行maven安装?
答案 0 :(得分:0)
确保安装了m2eclipse插件。
http://eclipse.org/m2e/download/
另外,安装m2eclipse-wtp插件
http://marketplace.eclipse.org/content/maven-integration-eclipse-wtp#.UUdUhBxwrIU
确保您已将项目创建为“Maven”项目。因此,如果您查看“ProjectA-> Properties-> Builders”,您应该会看到“Maven Project Builder”。
如果您按照上述所有步骤操作,您的项目依赖项应该正确解析,并且您不应该有错误。
如果您仍有错误,请发布您的eclipse项目结构。
答案 1 :(得分:0)
你的pom文件到底是什么样的?我经常使用一个设置,其中我有一个由其他Maven子项目组成的父Maven项目。
我将有一个看起来像这样的父pom:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<groupId>put group id here</groupId>
<artifactId>name of artifact id</artifactId>
<version>0.2.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>example-subproject-1</module>
<module>example-subproject-2</module>
</modules>
</project>
然后我会在子项目中看到这样的pom文件(假设这是子项目1的pom文件):
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<parent>
<artifactId>artifact id of parent pom</artifactId>
<groupId>group id of parent pom</groupId>
<version>version number of parent pom</version>
</parent>
<groupId>group id</groupId>
<artifactId>artifact id</artifactId>
<packaging>packaging</packaging>
<version>1</version>
<name>put name here</name>
<dependencies>
<dependency>
<groupId>group id of example subproject 2</groupId>
<artifactId>example-subproject-2</artifactId>
<version>version number of example subproject 2</version>
</dependency>
</dependencies>
</project>
当我以这种方式设置东西时,如果我在根目录中,我可以编译整个项目。如果我只想编译一个特定的目录,我只需要更改到该目录。确保在依赖项部分中包含任何所需的子项目。