我有一个项目,我使用Maven作为构建工具。
在我的pom.xml
文件中,我有这些依赖项:
<dependency>
<groupId>com.my.group1</groupId>
<artifactId>MyArtifact1</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>com.my.group2</groupId>
<artifactId>MyArtifact2</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>com.my.group3</groupId>
<artifactId>MyArtifact3</artifactId>
<version>1.3</version>
</dependency>
在我拥有pom.xml
的文件夹中,我还有一个子文件夹\external
。在此子文件夹中,我将上面列出的工件视为广告:MyArtifact1-1.0.jar
,MyArtifact2-1.1.jar
,MyArtifact3-1.3.jar
。
问题在于,当我运行mvn install
时,我得到了这个:
[ERROR] Failed to execute goal on project my-project: Could not resolve dependencies for project com.my.group4:sample-project:jar:20161207.3: The following artifacts could not be resolved: com.my.group1:MyArtifact1:jar:1.0, com.my.group2:MyArtifact2:jar:1.1, com.my.group3:MyArtifact3:jar:1.3: Failure to find com.my.group1:MyArtifact1:jar:1.0 in https://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced
到目前为止,我打成了这个:
mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file -Dfile=./external/MyArtifact1-1.0.jar -DgroupId=com.my.group1 -DartifactId=MyArtifact1 -Dversion=1.0 -Dpackaging=jar
我尝试了以上所有3个包,但看起来它似乎没有任何效果。
答案 0 :(得分:2)
您是否尝试在计算机中下载的maven编译.jar
文件中加入?
请记住,Maven将首先尝试从本地存储库(计算机中的文件夹)和全局存储库中获取依赖项。如果您的依赖项(.jar)不在这些存储库中,您将收到错误消息。
我在这里给你一些想法/解决方案:
如果.jar
文件来自其他maven项目
如果.jar
文件是您在计算机中创建的其他maven项目的产品。您可以在本地存储库中install the outputs of that project。安装完成后,maven将在本地找到依赖项。
// in the other projects
mvn clean install
如果您有许多本地项目,可以setup your own maven repository管理所有可重用的组件。许多公司setup their own repository in their local network。您可以使用Artifactory等软件
或Nexus Repository Manager。你甚至可以建立一个repository using your filesystem。请注意,要使用这些存储库,您必须在项目的pom.xml
文件中对其进行配置。
<project>
...
<repositories>
<repository>
<id>my-internal-site</id>
<url>http://myserver/repo</url>
</repository>
</repositories>
...
</project>
如果.jar
文件是从其他网站下载的
有时您需要存在于全局maven存储库中的.jar
个文件。您可以先尝试搜索这些存储库。您可以访问MVN repository等网站来搜索或浏览存储库中的现有包。如果您找到所需的依赖项,您也可以获得所需的依赖项以包含在pom.xml
中。
如果任何存储库中不存在.jar
个文件,您可以install the file in your local repository。 a tutorial in the Heroku's devcenter中有Mkyong和另一个{{3}}。您必须为该文件选择groupId-artifactId-version,安装该文件并将依赖项添加到项目的pom.xml
。
请注意,如果未使用maven创建.jar
,则必须提供所有参数
mvn install:install-file -Dfile=path-to-your-artifact-jar \
-DgroupId=your.groupId \
-DartifactId=your-artifactId \
-Dversion=version \
-Dpackaging=jar \
-DlocalRepositoryPath=path-to-specific-local-repo
如果使用Maven生成.jar
,该文件将包含带有元数据的pom.xml
。如果您使用Maven 2.5+,则无需提供groupId-artifactId和version。
mvn install:install-file -Dfile=path-to-your-artifact-jar \
-DlocalRepositoryPath=path-to-specific-local-repo
还有另一种选择。您可以将system
范围与本地systemPath
一起使用。但是,我认为此解决方案要求人们将库保留在所有开发人员的相同位置,或者需要在项目/代码存储库中包含.jar
文件。使用存储库是一个更好的主意。
<dependency>
<artifactId>..</artifactId>
<groupId>..</groupId>
<scope>system</scope>
<systemPath>${basedir}/lib/dependency.jar</systemPath>
</dependency>
答案 1 :(得分:0)
请检查这些罐子是否存在于您的本地存储库中。
您可以从maven setting.xml 文件中找到它的位置,如果没有提及那么它将采用默认路径,即 .m2 文件夹c drive。
您需要先检查这些罐子是否存在。如果没有,那么你需要复制那些正确的文件夹结构,或者你可以在你的本地射击命令下安装这些jar:
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>
答案 2 :(得分:0)
推荐的方法是: