Maven项目定义的存储库不起作用

Mat*_*Bai 6 java repository maven

已解决的 PS因为我现在没有足够的声誉回答我自己的问题所以我把解决方案放在了问题中.

我刚开始在我的android项目中使用Maven.我使用的是一个名为libgdx的游戏引擎,它不在中央仓库中,所以我必须自己安装它.

检查指令后,我使用这种方法./sf/ask/156132511/.我在root pom.xml中添加了下面定义的xml代码

<repositories>
<repository>
  <id>my-local-repo</id>
  <url>file://${basedir}/common/repo</url>
</repository>
</repositories>
Run Code Online (Sandbox Code Playgroud)

并使用该答案中的方法成功安装我需要的jar文件.然而,当我执行命令mvn install或者mvn -o install,它仍然告诉我找不到jar文件.我不确定我在root pom.xml中添加的存储库是否正常工作.
任何人都可以告诉我在哪里犯了错误,以及如何检查项目定义的存储库是否正常工作?谢谢.

谢谢死神,我想通了,这是我的愚蠢错误.

在我的项目中,我有3个模块.常见的android和桌面.我使用common/repo dir作为我的存储库.这就是我开始使用Maven的原因.除了2个错误,我做的一切都是正确的.

1.将根目录pom.xml中的存储库代码放在android目录中的pom.xml中.我只是觉得它会起作用,但事实并非如此.

2.如果我把代码放在正确的目录中,我应该修改网址,更改基础.

这节课花了我3个小时〜

小智 17

我同意Oleg的回答,但如果问题在他的所有步骤后仍然存在,请检查您的global settings.xml文件以获取该标记的可能用途.

镜像设置始终指向相同的仓库并忽略您在项目中定义的任何仓库.

例如你的pom.xml有

<repositories>
    <repository>
        <id>project.local</id>
        <name>project</name>
        <url>file://${project.basedir}/repo</url>
    </repository>
</repositories>
Run Code Online (Sandbox Code Playgroud)

确保你<USER_HOME>\.m2\settings.xml忽略它

<mirrors>
    <mirror>
        <id>central</id>
        <name>Central</name>
        <url>http://my.nexus.ip/nexus/content/repositories/central/</url>
        <mirrorOf>!project.local,*</mirrorOf>
    </mirror>
</mirrors>
Run Code Online (Sandbox Code Playgroud)

  • 我需要从镜像中排除我尝试使用的本地存储库——您可以通过将“!your-repo-id”添加到 catch all mirrorOf 来实现。换句话说, &lt;mirrorOf&gt;!your-repo-id,*&lt;/mirrorOf&gt; (2认同)
  • 这是我的问题的唯一有效解决方案。 (2认同)

Ole*_*eev 5

  1. 运行 mvn help:effective-pom

  2. 查看该<repositories>部分,找到您的my-local-repo并查找其真实路径(不包括 file:// 前缀)

  3. 运行此命令(来自您自己找到的链接) mvn org.apache.maven.plugins:maven-install-plugin:2.3.1:install-file -Dfile=/path/to/your.jar -DgroupId=yourGroup -DartifactId=yourArtifactId -Dversion=1.0 -Dpackaging=jar -DlocalRepositoryPath=the_path_you_looked_up_excluding_file://

  4. 如果(3)产生错误他们张贴在这里,如果不是-确保文件夹the_path_you_looked_up_excluding_file://包含子文件夹结构grp/yourArtifactId/1.0/your.jar在那里

  5. 毕竟,您的项目必须能够使用此定义找到依赖项

    <dependency>
        <groupId>grp</groupId>
        <artifactId>yourArtifactId</artifactId>
        <version>1.0</version>
    </dependency>
    
    Run Code Online (Sandbox Code Playgroud)