正确的Ant / Ivy配置,可以同时下载jar和源代码

问题描述

我想使用Ant / Ivy解决jar和Source依赖项。原因是我想为我的开发人员提供有关访问源代码和相关内联文档的帮助。并非我们项目使用的所有库都是公共的,所以我的目标是为我们自己的公司私有依赖项提供源,而不是从IDE中反编译源(IntelliJ仅在Maven上搜索源!!)

当前我使用以下内容

<property name="project.ivy.settingsFile" value="${basedir}/.ant/conf/ivy-settings.xml"/>
<property name="ivy.artifactPattern" value="[artifact]-[revision]-[type].[ext]"/>
<target name="ivy-retrieve">
    <property name="version" value="dev"/>
    <ivy:configure override="true" file="${project.ivy.settingsFile}"/>

    <ivy:resolve file="phoenix-ivy.xml" conf="provided,compile,runtime,test,junit" />
    <ivy:retrieve sync="true" conf="*" type="jar,bundle" pattern="${project.webapp.lib}/${ivy.artifactPattern}" file="phoenix-ivy.xml"/>
    <ivy:retrieve sync="true" conf="compile,compileOnly,auth-iccrea,auth-mps,auth-db" type="jar,bundle,source,javadoc"
                  pattern="build/lib-compile/${ivy.artifactPattern}" file="phoenix-ivy.xml"/>
    <ivy:retrieve sync="true" conf="testCompile" type="jar,bundle" pattern="build/lib-testcompile/${ivy.artifactPattern}" file="phoenix-ivy.xml"/>
    <ivy:retrieve sync="true" conf="testRuntime" type="jar,bundle" pattern="build/lib-testruntime/${ivy.artifactPattern}" file="phoenix-ivy.xml"/>
    <ivy:retrieve sync="true" conf="runtime" type="jar" pattern="build/lib-runtime/${ivy.artifactPattern}" file="phoenix-ivy.xml"/>

</target>

使用上述artifactPattern,我遇到了两个问题

问题1:“-jar”后缀

enter image description here

build/lib-compile/activation-1.1.1-jar.jar
build/lib-compile/activiti-bpmn-converter-6.0.0-jar.jar
build/lib-compile/activiti-bpmn-converter-6.0.0-javadoc.jar
build/lib-compile/activiti-bpmn-converter-6.0.0-source.jar
build/lib-compile/activiti-bpmn-model-6.0.0-jar.jar
build/lib-compile/activiti-bpmn-model-6.0.0-javadoc.jar
build/lib-compile/activiti-bpmn-model-6.0.0-source.jar
build/lib-compile/activiti-dmn-api-6.0.0-jar.jar
build/lib-compile/activiti-dmn-api-6.0.0-javadoc.jar
build/lib-compile/activiti-dmn-api-6.0.0-source.jar
build/lib-compile/activiti-dmn-model-6.0.0-jar.jar
build/lib-compile/activiti-dmn-model-6.0.0-javadoc.jar
build/lib-compile/activiti-dmn-model-6.0.0-source.jar

我不喜欢这样,因为IntelliJ无法将jar与源代码匹配,并且在源代码反编译方面对我没有多大帮助。

可能我想要从主要工件中省略“ -jar”后缀,而保留“ -javadoc”和“ -source”

在IntelliJ中尝试下载任何工件的源代码时,我得到一个找不到源代码错误

Source not found

Sources for 'cxf-rt-features-metrics-3.3.5-bundle.jar' not found

问题2:与捆绑软件混淆

Bundles

build/lib-compile/jackson-core-2.11.2-bundle.jar
build/lib-compile/jackson-databind-2.11.2-bundle.jar
build/lib-compile/jackson-dataformat-csv-2.11.2-bundle.jar
build/lib-compile/jackson-dataformat-properties-2.11.2-bundle.jar
build/lib-compile/jackson-dataformat-xml-2.11.2-bundle.jar
build/lib-compile/jackson-dataformat-yaml-2.11.2-bundle.jar
build/lib-compile/jackson-datatype-guava-2.11.2-bundle.jar
build/lib-compile/jackson-datatype-jdk8-2.11.2-bundle.jar
build/lib-compile/jackson-datatype-joda-2.11.2-bundle.jar
build/lib-compile/jackson-datatype-jsr310-2.11.2-bundle.jar
build/lib-compile/jackson-module-jaxb-annotations-2.11.2-bundle.jar

某些工件仅以bundle类型(example here类型可用,但是here我发现source_S_类型的工件)。

依赖文件

<info organisation="com.acme" module="pcp-parent" revision="${version.number}" status="${project.ivy.status}"/>

<configurations>
    <conf name="compileOnly"    visibility="public"                                 />
    <conf name="runtimeOnly"    visibility="public"                                 />
    <conf name="compile"        visibility="public" extends="compileOnly"           />
    <conf name="runtime"        visibility="public" extends="compile,runtimeOnly"   />
    <conf name="testCompile"    visibility="public" extends="compile"               />
    <conf name="testRuntime"    visibility="public" extends="runtime,testCompile"   />
    <conf name="test"           visibility="public" extends="testRuntime"           />
    <conf name="auth-iccrea"    visibility="public" extends="runtime"               />
    <conf name="auth-mps"       visibility="public" extends="runtime"               />
    <conf name="auth-db"        visibility="public" extends="runtime"               />
    <!-- Deprecated configuration ==> https://blog.gradle.org/introducing-compile-only-dependencies -->
    <conf name="provided"       visibility="public" extends="compileOnly"           />
</configurations>

<dependencies>

    <!-- Spring -->
    <dependency org="org.springframework"                                     name="spring-core"                       rev="${spring.version}"      transitive="false"          conf="compile->default"/>
    <dependency org="org.springframework"                                     name="spring-aspects"                    rev="${spring.version}"      transitive="false"          conf="compile->default"/>
    <dependency org="org.springframework"                                     name="spring-aop"                        rev="${spring.version}"      transitive="false"          conf="compile->default"/>
    <dependency org="org.springframework"                                     name="spring-beans"                      rev="${spring.version}"      transitive="false"          conf="compile->default"/>

----------------

    <!-- jackson2 libs -->
    <dependency org="com.fasterxml.jackson.core"                              name="jackson-databind"                  rev="${jackson.version}"     transitive="false"          conf="compile->default"/>
    <dependency org="com.fasterxml.jackson.core"                              name="jackson-core"                      rev="${jackson.version}"     transitive="false"          conf="compile->default"/>
    <dependency org="com.fasterxml.jackson.core"                              name="jackson-annotations"               rev="${jackson.version}"     transitive="false"          conf="compile->default"/>
    <dependency org="com.fasterxml.jackson.dataformat"                        name="jackson-dataformat-csv"            rev="${jackson.version}"     transitive="false"          conf="compile->default"/>


-------------

    </dependencies>

</ivy-module>

然后是.ant/conf/ivy-settings.xml

<?xml version="1.0" encoding="ISO-8859-1"?>

<ivysettings>

    <settings defaultResolver="main" />
    <!--Authentication required for publishing (deployment). 'Artifactory Realm' is the realm used by Artifactory so don't change it. -->
    <credentials host="" realm="Artifactory Realm" username="deployment" passwd="" />
    <resolvers>
        <chain name="main" changingPattern=".*-BETA.*" checkmodified="true" changingMatcher="regexp">
            <ibiblio name="public" m2compatible="true" root="https://artifactory.acme.com/artifactory/acme-all" />
            <url name="acme" m2compatible="false">
                <artifact pattern="https://artifactory.acme.com/artifactory/acme/[organization]/[module]/[revision]/[type]s/[module].[ext]" />
                <ivy pattern="https://artifactory.acme.com/artifactory/acme/[organization]/[module]/[revision]/[type]s/ivy.xml" />
            </url>
            <url name="acme-integration" m2compatible="false" changingPattern=".*-BETA.*" checkmodified="true" changingMatcher="regexp">
                <artifact pattern="https://artifactory.acme.com/artifactory/acme-integration/[organization]/[module]/[revision]/[type]s/[module](-[classifier])-[revision].[ext]" />
                <ivy pattern="https://artifactory.acme.com/artifactory/acme-integration/[organization]/[module]/[revision]/[type]s/ivy-[revision].xml" />
            </url>
        </chain>
    </resolvers>
</ivysettings>

Maven Central由Artifactory的缓存支持,因此这就是我们省略它的原因。

问题

什么是同时获取jar和源代码的正确的Ant / Ivy检索配置?

如果这里的人认为我对蚂蚁和常春藤有很多困惑,他们是正确的 !!!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)