Maven本地工件解决方案在1天后无效

时间:2015-06-04 07:42:56

标签: java maven drools

我使用以下命令在本地存储库中安装我的工件:

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>

2 个答案:

答案 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