Leo*_*zes 5 java ant maven-3 maven-ant-tasks
上周我们的项目停止工作,因为 maven-ant-task 似乎在调用 maven central withhttp而不是https现在它被强制执行,所以它返回一个501.
我们看到 Apache 发布了一个新的库Maven Artifact Resolver Ant Tasks,所以我们正在尝试迁移。
这是我们的旧文件,用来调用我们内部的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>
Run Code Online (Sandbox Code Playgroud)
我下载了项目,生成了uber jar(之后我发现你也可以在这里下载它),并将其添加到我的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>
Run Code Online (Sandbox Code Playgroud)
这似乎有效,但看起来它没有使用settings.xml位于~/.m2/(默认位置,应该使用阅读文档的位置)的my ,因为我们有一个包含本地库的 nexus 存储库,但它似乎只是检查Maven 中央存储库,因为错误是:
Could not find artifact com.dome:dome:jar:4.23.0 in central (https://repo1.maven.org/maven2/)
我见过的文档中,你可以手动设置你的settings.xml位置,但没有例子或指示的地方把该配置,所以我无法得到它的工作。
如果有人有任何想法/建议,将不胜感激。
我也观察到了同样的情况,我认为这是maven-resolver org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(). 只要我需要解决的每个工件都有一个 maven-metadata.xml ,我就可以避免这个问题。所以,我的解决方法是:
将我们的部署存储库复制到~/.m2/repository设置基线
用于mvn -DupdateReleaseInfo=true任何本地安装
在运行 Ant 之前使用mvn dependency:go-offline和mvn dependency:get -Dartifact=...解决任何其他依赖关系
| 归档时间: |
|
| 查看次数: |
882 次 |
| 最近记录: |