1

推荐在没有公共存储库的 Maven 项目中添加 JAR 文件的最佳策略之一是使用静态项目内存储库。不错的博客:http ://charlie.cu.cc/2012/06/how-add-external-libraries-maven/或我发现 StackOverflow 帖子中最受欢迎的博客之一 我可以在不安装它们的情况下将 jars 添加到 maven 2 构建类路径吗? 是否有人在为解决方案的集成采取完全相同的步骤时遇到下一个问题(我的特殊情况是添加 filters-1.0.jar 文件):“Missing artifact imageUtil:filters:jar:0.1:compile”或换句话说,尽管如此最后在 pom.xml 中设置了静态项目内存储库也无法识别?我错过了什么吗?

以下是我整合解决方案的步骤:

  • 在我的 Maven 项目的根目录中创建一个“repo”文件夹
  • 在 pom.xml 我注册了静态存储库:

<repository>

       <id>repo</id>
       <releases>
           <enabled>true</enabled>
           <checksumPolicy>ignore</checksumPolicy>
       </releases>
       <snapshots>
           <enabled>false</enabled>
       </snapshots>
       <url>file://${project.basedir}/repo</url>

</repository>

  • 再次在 pom.xml 中添加了提及依赖项:

<dependency>

  <groupId>imageUtil</groupId>
  <artifactId>filters</artifactId>
  <version>0.1</version>

</dependency>

  • 最后一步是在下一个子文件夹结构中复制提及 JAR

    /repo/imageUtil/filters/0.1/filters-0.1.jar

当我签入项目的构建路径时(我使用的是 Eclipse),我还看到提到 JAR 正在我的本地存储库中查找或 - /home/simeon/.m2/repository/imageUtil/filters/0.1(缺失)

也许这里的问题是“如何对我的 maven 项目说应该在我的静态项目内存储库中搜索这个 JAR”?

提前致谢, 西蒙

4

1 回答 1

2

你的设置看起来不错。它永远不会占用您的项目内存储库,还是您的意思是它第一次工作,然后它只会在/home/simeon/.m2/repository/imageUtil/filters/0.1

我尝试了类似的方法,发现如果我给出 Maven 中央存储库中可用的标准库的名称,它会首先查找那里并从那里下载它

所以我采用了一个标准库(saxon)并将其重命名为不同的东西(例如:saxonic),我知道它不会在任何外部回购中可用,我可以看到它使用我定义的“inprojrepo”并将其安装到我自己的本地Maven仓库。

之后,它使用本地 Maven 存储库进行下一次构建。

[INFO] ------------------------------------------------------------------------
Downloading: file://D:\mymavenproject\someproject/inprojrepo/net/sf/Saxo
nic/9.4/Saxonic-9.4.pom
Downloading: http://repo.maven.apache.org/maven2/net/sf/Saxonic/9.4/Saxonic-9.4.
pom
[WARNING] The POM for net.sf:Saxonic:jar:9.4 is missing, no dependency informati
on available
Downloading: file://D:\mymavenproject\someproject/inprojrepo/net/sf/Saxo
nic/9.4/Saxonic-9.4.jar
Downloaded: file://D:\mymavenproject\someproject/inprojrepo/net/sf/Saxon
ic/9.4/Saxonic-9.4.jar (9560 KB at 29234.1 KB/sec)
[INFO]

我的 POM

<repository>
    <id>inprojrepo</id>
    <releases>
           <enabled>true</enabled>
           <checksumPolicy>ignore</checksumPolicy>
       </releases>
       <snapshots>
           <enabled>false</enabled>
       </snapshots>
    <url>file://${project.basedir}/inprojrepo</url>
</repository>
于 2013-01-15T06:12:36.373 回答