无法卸载的Netbeans项目(pom在本地存储库中不可用)

时间:2012-01-25 15:40:36

标签: netbeans maven-3 netbeans-7

我有一个Maven项目,在Netbeans中一直运行良好,但从6.9升级到7.1并不顺利。我收到以下错误:

  

在为foo.bar:baz:1.0.0构建有效模型时遇到了1个问题   [致命]不可解析的父POM:存储库系统处于脱机状态,但工件foo:bar-parent:pom:1.0.1在本地存储库中不可用。并且'parent.relativePath'指向错误的本地POM @第12行第13列    for project foo.bar:baz:1.0.0 at /Users/me/workspace/pom.xml

我发现Netbeans的这个bug ticket很好地描述了另一个人的问题但是使用“Reload POM”的建议不起作用,mvn validate也没有。

这里有几个令人困惑的项目。

  • 在命令行上运行。
  • 我的同事在相同(通过各种指示)设置下,在NB 7.1上运行此项目。
  • 构建Netbeans内部工作(构建成功)
  • 使用错误对话框中提供的“Prime Build”按钮启动成功的构建。
  • 文件缺失!它是(并且一直)在当地的回购!正好在我期望的地方:.m2 / repository / foo / bar-parent / 1.0.1 / bar-parent-1.0.1.pom

根据Maven POM intro页面,当父pom /项目位于不同于正常位置(其中“normal”为“../pom.xml”时,将使用relativePath属性。 “)。

在我的情况下,我的父项目实际上只是只是一个pom ,除了存储库(本地和远程)之外,它不存在于任何地方。即使它本地不存在,我也希望做一个辅助的“在线”构建(如建议的那样)可以修复Netbeans,但事实并非如此。

有一次,我在Netbeans之外手动更改了我的pom文件,NB内的项目自行修复。我以相同的方式手动修改子项目以使它们工作,但修复程序没有持续。几分钟后,“[unloadable]”绰号返回,但我不确切知道何时或是什么原因导致它返回。

我尝试使用Bundled v3.0.3 Maven,我的外部v3.0.2 Maven,删除我的~/.netbeans*文件夹,删除我的.m2/repository文件夹,复制他的 { {1}}到我的机器,删除所有版本的Netbeans并重新安装7.1,关闭并重新打开项目和应用程序,让Netbeans使用普通.m2/repositoryBuild选项从头开始构建项目以及错误对话框中的Clean and Build选项,在命令行上从头开始构建然后导入到Netbeans,其任何及所有组合,似乎没什么关系。

现在我正在降级到6.9.1,但我很想知道是否有其他东西我可以尝试使其发挥作用。

4 个答案:

答案 0 :(得分:3)

你的pom.xml的标题是什么?我把它改成了这个:

<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/maven-v4_0_0.xsd">

<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

Maven CLI也构建了它们,NetBeans 6.x ......但是NetBeans 7.x只构建了第一个。

答案 1 :(得分:2)

更新:我也设置了我的settings.xml ...... :(

<mirrors>
  <mirror>
    <id>javaforum</id>
    <url>http://nexus.javaforum.hu/nexus/content/groups/public/</url>
    <mirrorOf>*</mirrorOf>
  </mirror>
</mirrors>
<profiles>
  <profile>
    <id>default</id>
    <activation>
      <activeByDefault>true</activeByDefault>
    </activation>
    <repositories>
      <repository>
        <id>javaforum</id>
        <url>http://nexus.javaforum.hu/nexus/content/groups/public/</url>
        <releases>
          <enabled>true</enabled>
        </releases>
        <snapshots>
          <enabled>true</enabled>
        </snapshots>
      </repository>
    </repositories>
  </profile>
</profiles>

现在可以使用NetBeans 7.x。

如果我删除/评论“存储库”部分:

* CLI (3.0.3) build is working
* NetBeans 7.x build is working but the project is "unloadable"

如果我删除/评论“镜像”部分:

* CLI (3.0-3) build isn't working
* NetBeans 7.x build is working, the project looks like good

所以,pom.xml修改不是必需的恕我直言......:)

答案 2 :(得分:2)

我不得不将pom.xml文件从我的repo复制到项目的pom.xml上面的一个目录级别,并重命名为pom.xml。不理想,但它有效。

答案 3 :(得分:2)

在尝试清理内部存储库(Archiva,使用repo组),简化我的settings.xml,然后将父POM添加到项目中后,我看到了运行NetBeans 7.1.x时出现的错误。

如果我删除项目中的父POM引用,问题就会消失。

如果我在settings.xml中包含一个有效的配置文件和一个有效的存储库部分,则问题就会消失。

如果我在项目POM中包含有效的存储库部分,问题就会消失。

我的父POM不是多模块项目的根。它只是像任何其他依赖项一样从存储库中提取。我没有一个我可以尝试使用父项的多模块项目。

无论如何,maven在没有该设置的情况下从命令行构建和部署我的项目就好了(即使使用父POM),但NetBeans本身似乎需要在某处定义存储库部分。

我觉得这是一个关于Netbeans如何对待子项目的错误。我的猜测是,它正在查找父级的默认位置位置(../pom.xml),当它找不到它时,尝试在定义的存储库中查找它。由于它没有定义,它会窒息。

Netbeans在尝试查找父POM时似乎忽略了镜像设置。