可卸载的Netbeans项目(pom在本地系统信息库中不可用)

eyh26e7m  于 2022-11-10  发布在  其他
关注(0)|答案(5)|浏览(129)

我有一个Maven项目,它在Netbeans中一直运行良好,但是从6.9升级到7.1并不顺利。我得到了以下错误:
为www.example.com构建有效模型时遇到1个问题foo.bar:baz:1.0.0 [致命]无法解析父POM:存储库系统处于脱机状态,但工件foo:bar-parent:pom:1.0.1在本地存储库中不可用。并且“parent.relativePath”指向了错误的本地POM @第12行第13列,用于/Users/me/workspace/pom. xml中的项目foo.bar:baz:1.0.0
我发现这个bug ticket的Netbeans,很好地描述了另一个家伙的问题,但使用“重新加载POM”的建议不工作,也没有mvn validate
这里有几个令人困惑的项目。

  • 在命令行上运行是有效的。
  • 我的同事使用完全相同的(所有迹象表明)设置在NB 7.1上运行此项目。
  • 在Netbeans内部构建工作正常(构建成功)
  • 使用错误对话框上提供的“Prime Build”按钮启动成功的构建。
  • 该文件丢失!它在(并且一直在)本地存储库中!正是我所期望的位置:.m2/存储库/foo/条形图父级/1.0.1/条形图父级-1.0.1.pom

根据Maven POM介绍页面,当父pom/项目位于非正常位置(其中“正常”为“../pom.xml”)时,将使用relativePath属性。
在我的例子中,我的父项目实际上 * 只是一个pom*,它并不存在于除了存储库之外的任何地方(本地和远程)。即使它不存在于本地,我也希望执行一个辅助的“在线”构建(如建议的那样)来修复Netbeans,但它没有。
有一次,我在Netbeans外手动修改了pom文件,NB内的项目自行修复了。我用同样的方法手动修改了子项目,使它们可以工作,但修复没有持续多久。几分钟后,“[unloadable]”标记返回,尽管我不知道确切的时间和原因。
我试过使用捆绑的v3.0.3 Maven,我的外部v3.0.2 Maven,删除我的~/.netbeans*文件夹,删除我的.m2/repository文件夹,将 his.m2/repository复制到我的机器上,删除Netbeans的所有版本并重新安装7.1,关闭并重新打开项目和应用程序,让Netbeans使用正常的BuildClean and Build选项以及错误对话框上的Prime Build选项,在命令行上从头开始构建,* 然后 * 导入到Netbeans,以及它们的任何和所有组合,似乎没有什么问题。
现在我正在降级到6.9.1,但我很想知道是否有其他的东西,我可以尝试使这项工作。

klh5stk1

klh5stk11#

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只会建置第一个版本。

o2gm4chl

o2gm4chl2#

更新:我也设置了我的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一起使用。
如果我删除/注解“repository”部分:


* 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 IMHO...:)

332nm8kg

332nm8kg3#

最后我不得不将pom.xml文件从我的repo复制到我的项目的pom.xml之上的一个目录级别,并重命名为pom.xml。虽然不理想,但它工作了。

col17t5w

col17t5w4#

我在尝试清理内部资源库(Archiva,使用repo组),简化settings.xml,然后将父POM添加到项目中之后,运行NetBeans 7.1.x时看到了所描述的错误。
如果我移除项目中的父POM指涉,问题就会消失。
如果我在settings.xml中包含一个活动的配置文件,并且该配置文件包含一个有效的存储库部分,那么这个问题就会消失。
如果我在我的项目POM中包含了一个有效的存储库部分,这个问题就会消失。
我的父POM不是多模块项目的根。它只是像任何其他依赖项一样从仓库中提取。我没有一个多模块项目有一个可以尝试的父POM。
无论如何,maven在没有该设置的情况下(即使有父POM)也可以从命令行很好地构建和部署我的项目,但NetBeans本身似乎需要在某处定义一个存储库部分。
在我看来,Netbeans处理子项目的方式是一个bug。我猜它在默认位置寻找父项目(../pom.xml),当它找不到它时,试图在定义的仓库中寻找它。由于它没有定义,它卡住了。
Netbeans在尝试查找父POM时似乎忽略了镜像设置。

cnwbcb6i

cnwbcb6i5#

我将父版本从2.6.5更改为2.6.4

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.6.4</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

相关问题