如何创建Maven“Project Repo”

时间:2014-02-07 13:29:20

标签: maven maven-2

我被要求查看一个需要 Maven 2.1 的旧项目以及一些未(并且不会)存储在我们的Nexus中的JAR。

我正试图在this帖子中关注@Nikita Volkov关于创建项目回购以将JAR保存为工件的建议。这个想法是我可以检查这个repo到源代码控制。然后,我可以在任何机器上检查它,并在没有任何特殊配置的情况下构建它。

首先,我创建了一个仓库并通过运行:

添加了我的第一个Jar
mvn install:install-file -DlocalRepositoryPath=repo -DcreateChecksum=true -Dpackaging=jar -Dfile=lib/myJar.jar -DgroupId=my.group -DartifactId=myArtifact -Dversion=0.0.1

然后我创建了一个看起来像的POM:

<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>my.group</groupId>
    <artifactId>MyApp</artifactId>
    <packaging>ear</packaging>
    <version>1.0-SNAPSHOT</version>

    <repositories>
      <repository>
        <id>my-repo</id>
        <url>file://${project.basedir}/repo</url>
      </repository>
    </repositories>

    <dependencies>
      <dependency>
        <groupId>my.group</groupId>
        <artifactId>myArtifact</artifactId>
        <version>0.0.1</version>
      </dependency>
    </dependencies>

    <build>
    </build>
</project>

当我在Eclipse中查看时,如果标记依赖项并出现错误 Missing artifact my.group:myArtifact:jar:0.0.1.

当我从命令行运行它时出现错误
Unable to find resource 'my.group:myArtifact:pom:0.0.1' in repository my-repo

显然我在原帖中没有理解,但我看不出是什么

那么,任何人都可以提供一个如何创建项目内Maven回购的实例吗?

更新 存储在我本地仓库中的文件是:

  • 我/组/ myArtifact / 0.0.1 / myArtifact-0.0.1.jar
  • 我/组/ myArtifact / 0.0.1 / myArtifact-0.0.1.jar.md5
  • 我/组/ myArtifact / 0.0.1 / myArtifact-0.0.1.jar.sha1
  • 我/组/ myArtifact / 0.0.1 / myArtifact-0.0.1.pom
  • 我/组/ myArtifact / 0.0.1 / myArtifact-0.0.1.pom.md5
  • 我/组/ myArtifact / 0.0.1 / myArtifact-0.0.1.pom.sha1
  • 我/组/ myArtifact /行家-元数据那个local.xml
  • 我/组/ myArtifact /行家-元数据local.xml.md5
  • 我/组/ myArtifact /行家-元数据local.xml.sha1

更新 我的.m2 / settings文件的内容是:

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

  <mirrors>
    <mirror>
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <url>http://192.168.152.78:5000/nexus/content/groups/public/</url> 
    </mirror>
  </mirrors>
</settings>

1 个答案:

答案 0 :(得分:0)

对原始问题进行多次更新后的工作解决方案

您的settings.xml文件声明了一个包罗万象的镜像。这将对您的pom文件中的本地存储库声明生效。删除catch-all镜像,或尝试从镜像中排除项目存储库的存储库ID:

<mirror>*,!my-repo</mirror>

原始回答

看起来您将库安装到默认的本地Maven存储库位置(〜/ .m2 / repository),但是您尝试从项目中的某个位置进行选择。

在运行“mvn install:install-file”目标之前,尝试更改Maven的存储库位置。您可以通过在settings.xml中添加“localRepository”设置来完成此操作。

您还可以专门为您的项目创建一个新的settings.xml,并告诉Maven在您处理项目时使用它(命令行上的-s参数)。 Eclipse或IntelliJ等IDE也支持使用备用settings.xml文件。