0

我有一个 Maven 项目,它实际上构建为多个 java 项目。项目 B 包含一个类,该类是项目 A 的子类。当我尝试在调试器中运行此类时,当该方法尝试从其父级调用任何功能时,我收到 NoSuchMethod 错误。

Maven 设置旨在编译每个项目并将其放置在 maven 存储库中,以便其他项目可以找到它们(它具有依赖性,因此它首先构建 pre-req 项目)。这对部署都有好处,但我不想强迫人们在 eclipse 中调试时每次启动调试器时都进行 maven 安装。相反,我尝试将 pre-req 项目添加到适用项目的类路径(构建路径-> 添加类文件夹)。这行不通。我认为这是由于我的构建路径中同时包含 Maven 存储库和类路径?但是应该强制解析类文件夹,并且应该在安装 maven 之前解析较新的类文件夹对吗?

如何配置它以使其工作而无需每次都重新进行 maven 安装?

4

2 回答 2

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 项目结构。

于 2013-03-18T17:54:24.440 回答
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>

当我以这种方式进行设置时,如果我在根目录中,我可以编译整个项目。如果我只想编译一个特定的目录,我只需切换到那个目录。确保在您的依赖项部分中包含任何需要的子项目。

于 2013-03-18T17:56:18.963 回答