java - Maven 本地 Artifact 解析在 1 天后不起作用

标签 java maven drools

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

mvn install:install-file -DgroupId=com.rules 
-DartifactId=rulesID -Dversion=0.1 -Dpackaging=jar -Dfile=rules.jar

然后我使用以下方法将 Artifact 解析为我的 java 代码:

org.drools.compiler.kproject.ReleaseIdImpl releaseId = 
new ReleaseIdImpl("com.rules", "rulesID", "LATEST");

一切都运转良好。

第二天,存储库似乎过期了,我需要另一个“mvn install”才能让一切再次正常工作。我得到的异常(exception)是:

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>

最佳答案

你的处理方式是错误的。 一般来说,设计依赖于 Artifact 的非特定版本的软件并不是最佳实践。此外,“最新”字段仅用于插件解析。请注意,LATEST 的工作方式可能并不总是保证使用最新版本。

Internally, Maven 2.x used the special version markers RELEASE and LATEST to support automatic plugin version resolution. These metaversions were also recognized in the element for a declaration. For the sake of reproducible builds, Maven 3.x no longer supports usage of these metaversions in the POM. As a result, users will need to replace occurrences of these metaversions with a concrete version. from Maven 3.x Compatibility Notes

如果您需要已发布的非插件 Artifact 的最高版本,您应该使用版本范围,请参阅第 3.4.3 节 herethis answer举个例子。

关于java - Maven 本地 Artifact 解析在 1 天后不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30637861/

相关文章:

java - TreeMap 如何搜索给定条目的后继者?

windows - 如何在 Windows 中更改 Maven 存储库文件夹?

maven - 如何在 Maven 安装目标中跳过测试,同时在 Maven 测试目标中运行测试?

java - 提供的 Maven 依赖项不存在于存储库中,但存在于容器中

drools - KieContainer可以加载多个包吗? KieContainer 和 KieBase 之间有什么关系

java - DROOLS:根据 >、< 或 = 创建条件很容易,但是我们如何为人类可读的规则创建条件呢?

java - 广播接收器在某些设备上无法后台运行

java - 如何使用 Java 8 Streams 在一次迭代中对 2 个不同的字段进行平面映射?

java - 使用hibernate注释的Mysql异常

java - 将 Drools 作为 fat jar 运行(将 drools 编译到 jar 中)