3

我刚刚开始使用 Maven 来尝试构建一个多模块项目。

除了 2 个小问题,一切都会好起来的。

使用 eclipse 向导创建一个新的 'simple J2EE' 原型的 maven 项目由于 eclipse 中的一个错误而失败,在查找原型时它会忽略代理设置(https://bugs.eclipse.org/bugs/show_bug.cgi?编号=348893)

解决方案是在命令行上创建我的项目,然后将生成的文件结构复制到我的工作空间内的“简单 maven”项目中 - 导入项目也失败了!

然而,我真正的问题是以下

当我单击项目文件夹并“创建一个新的 java 类”时,它会将类放在错误的位置,根据它应该在 maven 体系结构中的位置(我选择了错误的选项吗?)。所以我移动它。

所以现在我创建了第二个类,它具有第一个类作为成员。这两个类显然都在同一个包命名空间内。但是从我的第二个开始,我看不到任何成员类的方法。

我猜我在我的 POM 或我的结构中做错了什么。

但我不知道什么,也不知道您可能需要什么信息来帮助我解决它。

现在我已经恢复到在 Eclipse 中将我的子模块创建为一个单独的包,使用 ANT 和各种 Eclipse 工具来指向所需的库等。然后当我完成测试时,我将项目转换为“maven”项目。完成此操作后,我的父 POM 和子 POM 都在 eclipse 中验证 OK。但是,如果我决定扩展功能并在我的模块中添加一个新类,那么类文件最终会出现在错误的位置,我无法从中看到我的其他类(或它们中的这个新类)。

请帮忙。我喜欢 Maven 的想法并使用它来控制我的依赖项,顺便说一下,我将前往 ANT,也许学习 IVY 进行依赖项控制(尽管我有点沮丧地去所有让 Maven 发挥作用的斗争只是为了把它扔掉!)

我应该坚持使用 ANT / IVY 并忘记 maven,而是为未来保留 maven 目录结构吗?

编辑。

所以我可能错过了一些东西......我只是再次尝试在eclipse中创建一个简单的maven项目,这次我没有选择原型。我已将新的“模块”放在父文件夹下。这不是我一直在做的事情,我已经创建了许多与我的父母处于同一级别的外部模块。我从父级(使用我的测试模块)中的有效 POM 中注意到它有一个部分和其他标签。我会通过将它添加到我的个人模块 POM 中来解决我的问题吗?

4

3 回答 3

19

这是 Eclipse/Maven 怪异的结果,似乎是随机发生的。要解决:

右键单击项目并选择 Maven > 更新项目...

于 2013-01-17T01:57:16.263 回答
4

看看你的 .classpath。验证源文件夹和目标是否在 eclipse 期望的位置。

一个例子:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" output="target/classes" path="src/main/java"/>
    <classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
    <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"/>
    <classpathentry kind="output" path="target/classes"/>
</classpath>
于 2012-05-17T00:26:25.707 回答
0

也许您的 .project 文件中有类似的配置:

<buildSpec>
        <buildCommand>
            <name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
            <triggers>full,incremental,</triggers>
            <arguments>
                <dictionary>
                    <key>LaunchConfigHandle</key>
                    <value>&lt;project&gt;/.externalToolBuilders/org.eclipse.wst.common.project.facet.core.builder.launch</value>
                </dictionary>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
            <triggers>full,incremental,</triggers>
            <arguments>
                <dictionary>
                    <key>LaunchConfigHandle</key>
                    <value>&lt;project&gt;/.externalToolBuilders/org.eclipse.jdt.core.javabuilder.launch</value>
                </dictionary>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
            <triggers>full,incremental,</triggers>
            <arguments>
                <dictionary>
                    <key>LaunchConfigHandle</key>
                    <value>&lt;project&gt;/.externalToolBuilders/org.springframework.ide.eclipse.core.springbuilder.launch</value>
                </dictionary>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
            <triggers>full,incremental,</triggers>
            <arguments>
                <dictionary>
                    <key>LaunchConfigHandle</key>
                    <value>&lt;project&gt;/.externalToolBuilders/org.eclipse.wst.validation.validationbuilder.launch</value>
                </dictionary>
            </arguments>
        </buildCommand>

为此配置(或您的其他项目之一)更改它:

<buildCommand>
        <name>org.eclipse.wst.common.project.facet.core.builder</name>
        <arguments>
        </arguments>
    </buildCommand>
    <buildCommand>
        <name>org.eclipse.jdt.core.javabuilder</name>
        <arguments>
        </arguments>
    </buildCommand>
    <buildCommand>
        <name>org.springframework.ide.eclipse.core.springbuilder</name>
        <arguments>
        </arguments>
    </buildCommand>
于 2014-12-04T14:10:50.327 回答