我正在尝试将大型 Java Web 应用程序转换为 Eclipse 中的 Maven 项目。我们使用的大多数
jar
文件都位于中央 Maven 存储库中,但有 6 个文件不在中央 Maven 存储库中。我研究了如何创建共享远程(个人)Maven 存储库。我与团队中的其他开发人员在共享服务器上创建了一个(示例共享网络位置SHAREDSERVER
)。我设置了 pom.xml
来识别该存储库和中央 Maven 存储库:
<repositories>
<repository>
<id>custom-repo</id>
<url>file://SHAREDSERVER/custom/repo</url>
</repository>
<repository>
<id>central</id>
<url>https://repo.maven.apache.org/maven2</url>
</repository>
</repositories>
然后,在服务器上运行 Maven 命令:
mvn install:install-file
-Dfile=C:\location\of\jar\file
-DgroupId="com.my.group"
-DartifactId=art-one-name
-Dversion="1.0"
-Dpackaging=jar
-DlocalRepositoryPath=C:\custom\repo
没有显示任何错误,因此我检查所有文件是否都位于该位置
C:\custom\repo\com\my\group
- 它们都在那里。
然后在我正在开发项目的本地计算机上,我将此依赖项添加到
pom.xml
:
<dependency>
<groupId>com.my.group</groupId>
<artifactId>art-one-name</artifactId>
<version>1.0</version>
</dependency>
我的 Eclipse IDE 或其他地方没有显示错误。 (并且已成功获取来自中央 Maven 存储库的所有依赖项。)
然后我重复该过程,将工件
art-two-name
添加到同一组 com.my.group
。过程中没有任何错误。但是,当我在项目的 art-two-name
中包含 pom.xml
的依赖项时,它会显示:
Missing artifact com.my.group:art-two-name:jar:1.0
Could not find artifact com.my.group:art-two-name:jar:1.0 in custom-repo (file://SHAREDSERVER/custom/repo)
我尝试删除存储库并创建一个新存储库;但同样的问题也出现了。我尝试从 Eclipse 运行该项目,看看
pom.xml
中显示的错误消息是否毫无意义/肤浅,但它没有部署,给了我错误:
Error reading file C:\Users\myUsername\.m2\repository\com\my\group\art-two-name\1.0\art-two-name-1.0.jar
C:\Users\myUsername\.m2\repository\com\my\group\art-two-name\1.0\art-two-name-1.0.jar (The system cannot find the file specified)
很明显,它没有从
custom-repo
获取 jar 文件。
有什么想法为什么它只能找到一个的依赖项/jar,而我可以在
custom-repo
中看到它们?
(注意:这只是一个例子;我实际上先将 all jar 文件添加到
custom-repo
中,然后我尝试将它们添加为 pom.xml
中的依赖项,并意识到 Eclipse 只能找到其中一个依赖项。)
我不知道为什么我遇到的所有错误都毫无帮助,而且我找到的所有文档都没有这么说,但问题是这样的:
我的自定义
repository
中的 pom.xml
块需要进行此更改:
<url>file://SHAREDSERVER/custom/repo</url>
应该是
<url>file:\\SHAREDSERVER\custom\repo</url>
注意
\
vs./
的方向!这是 Windows 文件资源管理器中使用的斜杠的方向! (这适用于共享网络位置上的存储库。)