我使用以下命令在本地存储库中安装我的工件:
mvn install:install-file -DgroupId=com.rules
-DartifactId=rulesID -Dversion=0.1 -Dpackaging=jar -Dfile=rules.jar
然后我使用以下方法将工件解析为我的java代码:
org.drools.compiler.kproject.ReleaseIdImpl releaseId =
new ReleaseIdImpl("com.rules", "rulesID", "LATEST");
每件事情都很有效。
第二天,似乎存储库过期了,我需要另一个“mvn install”来让事情再次发挥作用。我得到的例外是:
Caused by: org.eclipse.aether.resolution.VersionResolutionException:
Failed to resolve version for com.rules:rulesID:pom:LATEST: Could not find metadata com.rules:rulesID/maven-metadata.xml
in local (C:\Users\gpiazzolla\.m2\repository)
at org.apache.maven.repository.internal.DefaultVersionResolver.resolveVersion(DefaultVersionResolver.java:312)
事实上,该目录中的maven-metadata.xml似乎消失了。
重新安装后“maven-metadata-local.xml”的内容为:
<?xml version="1.0" encoding="UTF-8"?>
<metadata>
<groupId>com.rules</groupId>
<artifactId>rulesID</artifactId>
<versioning>
<release>0.1</release>
<versions>
<version>0.1</version>
</versions>
<lastUpdated>20150604080940</lastUpdated>
</versioning>
</metadata>
答案 0 :(得分:1)
你这是错误的方式。 通常,设计依赖于工件的非特定版本的软件不是最佳实践。此外,“LATEST”字段仅用于插件分辨率。请注意,LATEST的工作方式可能并不总能保证使用最新版本。
在内部,Maven 2.x使用特殊版本标记RELEASE和 最新支持自动插件版本解析。这些 metaversion也被认为是一个元素 宣言。为了可重复的构建,Maven 3.x 不再支持在POM中使用这些转换。因此,用户将需要替换这些metaversion的出现 使用具体版本。 from Maven 3.x Compatibility Notes
如果您需要已发布的非插件工件的最高版本,则应使用版本范围,请参阅第3.4.3节here或{{ 3}}例如。
答案 1 :(得分:1)
最后我管理了这个。 使用Drools实现来查找工件并且maven存储库是本地存储而不是远程存在时出现错误。
检查出来:DROOLS-465