有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何定义SuperParam的路径?

有专家吗?我继承了一个巨大的maven项目,并试图将其编译。没走多远。我参加最高级别的pom。我能找到的xml,位于主干目录中,比主项目低一层。然后我发出命令“mvn验证”。获取以下错误:

[INFO] Scanning for projects...
Downloading: http://repo1.maven.org/maven2/com/mycompany/neto/vsd/vsd-superpom/1.1.0/vsd-superpom-1.1.0.pom
[INFO] Unable to find resource 'com.mycompany.neto.vsd:vsd-superpom:pom:1.1.0' in repository central (http://repo1.maven.org/maven2)

我注意到一个vsd SuperPM文件夹与主项目处于同一级别,所以我猜主项目需要指向它的某个地方?看着球。我明白了

<parent>
    <groupId>com.mycompany.neto.vsd</groupId>
    <artifactId>vsd-superpom</artifactId>
    <version>1.1.0</version>
</parent>

我应该将vsd SuperPM文件夹放在哪里才能找到它?我不明白它为什么要下载它。我在pom里什么也没看到。告诉它这样做的xml


共 (2) 个答案

  1. # 1 楼答案

    我看到(并使用)的常见项目结构是:

    • foo家长
      • pom.xml-我的模块的父POM,带有父../pom.xml
    • foo模块
      • pom.xml-具有父../foo-parent/pom.xml的模块POM
    • 。。。其他模块
    • pom.xml-没有父节点的多模块POM

    现在,如果我想构建foo模块,我需要在顶层文件夹中运行:

    mvn -pl foo-module -am package
    

    换句话说,您总是在构建多模块项目。但是,您可以指定只对某些子模块(-pl)及其依赖项(-am)感兴趣

  2. # 2 楼答案

    Apache Maven has a two level strategy to resolve and distribute files, which we call artifacts. The first level is called the local repository, which is the artifact cache on your system, by default located at ${user.home}/.m2/repository. When executing Maven, it'll first look in this local cache for artifacts. If the artifact cannot be found here, Maven will access the remote repositories to find the artifact. Once found it will be stored into the local repository, so it's be available for current and future usage.

    Apache Maven Install Plugin文件

    因此,如果您的超级pom独立于项目的其余部分,那么您只需从超级pom文件夹中调用mvn install,这样它就会被放置到您的本地存储库中。那会解决你的问题

    通常,顶级项目pom定义项目依赖项,它应该足以调用mvn verify | compile | ...

    如果顶级pom依赖于超级pom,则必须首先安装超级pom(或定义包含子模块super pom和项目其余部分的pom)