【问题标题】:maven with eclipse error "Path must include project and resource name"Maven 与 Eclipse 错误“路径必须包括项目和资源名称”
【发布时间】:2014-10-02 02:55:22
【问题描述】:

我最近开始使用 maven 和 eclipse。

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

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

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

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

【问题讨论】:

  • outside the project?您只能从 pom.xml 存在的地方构建,即上下文根
  • 构建,使用antrun插件复制到任何你想要的地方并从构建文件夹中删除内容
  • 为什么我不能像 ../build 这样的地方构建?这是maven的硬性规则吗?哪里写的?
  • 因为Eclipse JDT 不允许在项目之外设置输出目录。您可以阅读它,例如here。 Maven本身就支持这样的项目布局。

标签: java eclipse maven


【解决方案1】:

我确信这个问题是由 Maven 或 Eclipse 引起的,可能是因为我在 Stackoverflow 上找到了这个和其他对那个组合的引用。

经过大量调查,有点生气,事实证明 Git 参与其中 - 虽然我不知道是否是原因。

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

Path must include project and resource name

问题完全消失了。

Eclipse 版本:2020-12 (4.18.0)

【讨论】:

    【解决方案2】:

    要回答问题的最后一段,您可以通过软链接解决问题。我做的和你猜的有点不同。创建符号链接的不是 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 很高兴地认为它是在项目目录中构建的,但实际上路径“../../”将它带到了项目目录之外。我的猜测是绝对路径也可以。

    【讨论】:

      【解决方案3】:

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

      以下 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 也应该如此。

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

        • 我很高兴你解决了你的问题,但在我看来这不是 OP 问题。他说我需要在项目之外构建
        【解决方案5】:

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

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

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

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

        【讨论】:

          【解决方案6】:

          例如,如果你想在工作区之外的某个文件夹中构建内容,你可以有类似的东西:

          <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 完成您的构建、复制、删除操作。

          这里是copy to external folderdelete 的示例,您可以如上所述将两者结合到移动构建阶段

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-06-15
            • 2015-09-10
            • 1970-01-01
            • 1970-01-01
            • 2016-10-21
            • 2021-05-27
            相关资源
            最近更新 更多