上周,我们的项目停止工作,因为maven -ant任务似乎在用http而不是https调用maven中心,现在它被强制执行,所以它返回一个501。
我们看到Apache发布了一个新的库Maven伪影解析器Ant任务,所以我们尝试迁移。
这是我们的旧文件,用于调用内部jaxb库来生成java类。依赖项是dome-jaxb,我们用maven-ant-tasks解决了它。
<project name="Main" basedir="../../" xmlns:artifact="antlib:org.apache.maven.artifact.ant">
<!-- ==================== Execution Classpath =========================== -->
<artifact:dependencies filesetId="dependency.fileset" useScope="runtime">
<dependency groupId="com.dome" artifactId="dome-jaxb" version="LATEST"/>
</artifact:dependencies>
<path id="Execute.classpath">
<fileset refid="dependency.fileset"/>
<pathelement path="target/classes"/>
</path>
<!-- ==================== Type Target ===================================== -->
<target name="Types" description="Generate type">
<java classname="dome.util.xml.converter.GenerateClassFromXMLConfig" fork="yes">
<sysproperty key="file.encoding" value="UTF-8"/>
<arg value="${basedir}"/>
<arg value="${xmlConfig}"/>
<arg value="${moduleId}"/>
<classpath refid="Execute.classpath"/>
</java>
</target>
</project>我下载了这个项目,生成了uber (之后我发现您也可以下载它这里),并将它添加到我的ant/lib ( maven-ant-task.jar所在的位置)中。
我所创建的新配置文件是这样一个:
<project name="Main" basedir="../../" xmlns:resolver="antlib:org.apache.maven.resolver.ant">
<!-- ==================== Execution Classpath =========================== -->
<taskdef uri="antlib:org.apache.maven.resolver.ant" resource="org/apache/maven/resolver/ant/antlib.xml">
<classpath>
<fileset dir="target" includes="maven-resolver-ant-tasks-*uber.jar"/>
</classpath>
</taskdef>
<path id="Execute.classpath">
<pathelement path="target/classes"/>
</path>
<resolver:resolve>
<dependencies>
<dependency
groupId="com.dome"
artifactId="dome-jaxb"
version="LATEST"
scope="runtime"
/>
</dependencies>
<path refid="Execute.classpath" classpath="runtime"/>
</resolver:resolve>
<!-- ==================== Type Target ===================================== -->
<target name="Types" description="Generate type">
<java classname="dome.util.xml.converter.GenerateClassFromXMLConfig" fork="yes">
<sysproperty key="file.encoding" value="UTF-8"/>
<arg value="${basedir}"/>
<arg value="${xmlConfig}"/>
<arg value="${moduleId}"/>
<classpath refid="Execute.classpath"/>
</java>
</target>
</project>这似乎有效,但它似乎没有使用位于~/.m2/中的my ~/.m2/(应该使用读取文档的默认位置),因为我们在本地库中有一个nexus存储库,但是它似乎只检查maven中央存储库,因为错误是:
Could not find artifact com.dome:dome:jar:4.23.0 in central (https://repo1.maven.org/maven2/)
我在文档中看到,您可以手动设置settings.xml位置,但没有任何示例或指示说明将配置放在何处,因此无法使其正常工作。
如果有人有任何想法/建议,我们将不胜感激。
发布于 2020-06-22 17:13:48
我观察到了同样的情况,我认为这是maven-resolver org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts()中的一个bug。只要我需要解决的每个工件都有maven-metadata.xml,我就可以避免这个问题。所以,我的解决办法是:
~/.m2/repository以设置基线mvn -DupdateReleaseInfo=true进行任何本地安装mvn dependency:go-offline和mvn dependency:get -Dartifact=...解决任何其他依赖关系发布于 2020-06-22 20:26:33
您可能会受到https://issues.apache.org/jira/browse/MRESOLVER-66的影响。我还没有看过,但我很乐意接受补丁。
https://stackoverflow.com/questions/62384077
复制相似问题