繁体   English   中英

Maven 与 Eclipse 错误“路径必须包含项目和资源名称”

[英]maven with eclipse error “Path must include project and resource name”

我最近开始在 Eclipse 中使用 Maven。

我已经设置了几个项目,我注意到如果我尝试指定项目目录之外的构建目录(以覆盖目标),则在执行“更新项目”时会出现错误:

“更新 Maven 项目”遇到问题。

在“更新 MAven 项目”期间发生内部错误。 路径必须包含项目和资源名称:/[我的项目名称]

我需要在项目之外构建。 我怎样才能解决这个问题? 我可以让 maven 自动创建一个软链接吗?

虽然这是一个相当老的线程,但我最近遇到了这个问题并且能够解决它。 maven 抛出这个错误的原因是我在pom.xml文件的某处有一个绝对路径,该路径与项目导入到 eclipse 的目录不一致。 所以我有两个绝对路径(一个不正确,或指向以前的位置)指向资源,即pom.xml文件中的project.build.outputDirectory

解决方案:找到错误的绝对路径/home/userA/ProjectB/bin ,并替换为相对路径./bin 在 eclipse 中更新项目,你应该没问题。

这是一个有点旧的线程,但由于没有人给出正确的答案......

以下 Eclipse 错误:

An internal error occurred during: "Updating Maven Project".
java.lang.IllegalArgumentException: Path must include project and resource name:
    at org.eclipse.core.runtime.Assert.isLegal(Assert.java:63)
    at org.eclipse.core.internal.resources.Workspace.newResource(Workspace.java:2069)
    at ...

可以发生在许多不同的场景中——在 Eclipse Bugzilla 中,您可以找到很多类似的错误报告。

在您描述的情况下,这是一个已知限制 但这不是m2e错误 - 只是Eclipse JDT不允许在项目之外设置输出目录。
恕我直言,很遗憾,因为如果 maven 支持这样的布局,那么我希望m2e应该如此。

我已将其报告为错误 493229 但它已以WONTFIX状态关闭

要回答问题的最后一段,您可以使用软链接解决问题。 我做的和你猜的有点不同。 创建符号链接的不是 Maven,因为这是 Eclipse JDT(正如其他人指出的那样)的一个问题,它有时不调用 Maven(似乎)。 这是我所做的,所有路径都相对于我的 Maven 项目目录:

1)我希望我的实际构建目录是“../../local/java/scratch/target”

2)我创建了一个软链接: ln -s ../../local ./

3)我将此条目添加到我的“pom.xml”中:

<build>
  <directory>${project.basedir}/local/java/scratch/target</directory>
</build>

现在 Eclipse JDT 很高兴地认为它是在项目目录中构建的,但实际上路径“../../”将它带到了项目目录之外。 我的猜测是绝对路径也会起作用。

例如,如果您想在工作区外的某个文件夹中构建内容,您可以使用以下内容:

<build>
<plugins>
  <plugin>
    <executions>
        <execution>

        <phase>move-build</phase>
        ////do your build
  </plugin>

  <plugin>
    <executions>
        <execution>
        <id>copy-resources</id>
        <phase>move-build</phase>
        // do your copying to external
  </plugin>

  <plugin>
    <executions>
            <execution>

        <phase>move-build</phase>
        // do your deletions from target
  </plugin>

</plugins>
</build>

然后你可以调用mvn move-build来完成你的构建、复制、删除。

这是复制到外部文件夹删除的示例,您可以将两者结合到移动构建阶段,如上所述

why can't I build somewhere like ../build

是的,您可以在名为 build 的文件夹中构建,前提是它包含pom.xml

pom.xml文件是 Maven 中项目配置的核心。 它是一个包含构建项目所需的大部分信息的单个配置文件。

简而言之, pom.xml将包含构建项目的所有信息。 pom.xml是一个包含 Maven 使用的项目配置详细信息的文件。 它提供了项目所需的所有配置。

我确信这个问题是由 Maven 或 Eclipse 引起的,也许是因为我在 Stackoverflow 上发现了这个和其他对该组合的引用。

经过大量调查,并有点生气,结果是 Git 参与了——尽管我不知道这是否是原因。

我的 Maven 项目由几个“嵌套”的 POM 组成,我没有在 Eclipse 中打开父 POM,而只打开子级。 我在顶层有几个文件(批处理脚本),我没有提交给 Git,但是一旦我提交了这些文件

Path must include project and resource name

问题完全消失。

Eclipse 版本:2020-12 (4.18.0)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM