获取一个 jar 及其源代码和 javadoc

Pat*_*nan 3 ant javadoc ivy artifactory amazon-web-services

具有以下内容ivy.xml:

<dependency org="com.amazonaws" name="aws-java-sdk" rev="1.4.5">
     <artifact name="aws-java-sdk" ext="jar"/>
</dependency>
Run Code Online (Sandbox Code Playgroud)

它会下载aws-java-sdk-1.4.5.jar,这是 AWS SDK,即类。

很好,但我还想获得 Javadoc 和源代码。

遵循Ivy: Fetching Javadocs and Sources 的建议,我将以下内容放入ivy.xml

<configurations>
    <conf name="default" />
    <conf name="compile" visibility="public"/>
    <conf name="sources" visibility="public"/>
    <conf name="javadoc" visibility="public"/>
</configurations>

<dependency org="com.amazonaws" name="aws-java-sdk" 
rev="1.4.5" transitive="true" 
conf="javadoc->javadoc;sources->sources;compile->default"/>
Run Code Online (Sandbox Code Playgroud)

aws-java-sdk-1.4.5.jar 它仅下载,并且是Javadoc(无类或源文件)。

更新:可能有用的文件片段

构建.xml

<project name="aws-project" basedir="." xmlns:ivy="antlib:org.apache.ivy.ant">

<target name="build" depends="clean,configure-ivy-settings,artifactory-retrieve">
Run Code Online (Sandbox Code Playgroud)

ivy-config.xml

<project name="artifactory-bootstrap" xmlns:ac="http://ant-contrib.sourceforge.net" xmlns:ivy="antlib:org.apache.ivy.ant" default="configure-ivy-settings">

<target name="configure-ivy-settings" unless="skip.artifact.retrieve">

    <echoproperties prefix="ivy" />

    <!-- Change this to point to the branch in artifactory -->

    <property name="artifactory.branch" value="20.0" />

    <!-- Change this to the SRCROOT of your build -->
    <property name="build.srcroot" value="${bootstrap.basedir}" />

    <!-- Configure IVY Settings -->

    <ivy:settings url="https://artifactory.mycompany.com/artifactory/simple/bootstrap/${artifactory.branch}/ivysetting-artifactory.xml" id="artifactory.ivy.settings" host="artifactory.mycompany.com" realm="Artifactory Realm" username="${artifactory.user}" passwd="${artifactory.password}" />
</target>

<target name="artifactory-retrieve" unless="skip.artifact.retrieve">

    <property name="download.dir" value="${bootstrap.basedir}/extlib" />
    <delete dir="${download.dir}" />
    <mkdir dir="${download.dir}" />

    <ivy:resolve settingsRef="artifactory.ivy.settings" file="${ivy.file}" />
    <ivy:cachefileset settingsRef="artifactory.ivy.settings" setid="latest.downloads" />

    <echo message="Artifacts are available at : ${download.dir}" />

    <copy flatten="true" todir="${download.dir}">
        <fileset refid="latest.downloads" />
    </copy>

    <fileset id="ivy.fileset" dir="${download.dir}">
        <include name="*.jar" />
    </fileset>

    <property name="ivy.downloads.fileset" refid="ivy.fileset" />

    <!-- Construct classpath to downloads //-->

    <path id="ivy.classpath">
        <fileset dir="${download.dir}">
            <include name="*.jar" />
        </fileset>
    </path>

    <property name="ivy.downloads.classpath" refid="ivy.classpath" />
    <echo message="ivy.downloads.classpath=${ivy.downloads.classpath}"/>


    <echo message="Artifacts are available at : ${download.dir}" />
    <echo message="They can be referenced using fileset refid ivy.downloads.fileset or ivy.downloads.classpath" />
</target>
Run Code Online (Sandbox Code Playgroud)

Mar*_*nor 5

例子

\n\n
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 build\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 lib\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 compile\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 aws-java-sdk-1.4.5.jar\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 commons-codec-1.3.jar\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 commons-logging-1.1.1.jar\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 httpclient-4.1.jar\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 httpcore-4.1.jar\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 jackson-core-asl-1.8.9.jar\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 jackson-mapper-asl-1.8.9.jar\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 javadoc\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 aws-java-sdk-1.4.5-javadoc.jar\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 sources\n\xe2\x94\x82\xc2\xa0\xc2\xa0         \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 aws-java-sdk-1.4.5-sources.jar\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 build.xml\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 ivy.xml\n
Run Code Online (Sandbox Code Playgroud)\n\n

构建.xml

\n\n
<project name="demo" default="build" xmlns:ivy="antlib:org.apache.ivy.ant">\n\n    <target name="build" description="Compile code">\n        <ivy:retrieve pattern="build/lib/[conf]/[artifact]-[revision](-[classifier]).[ext]"/>\n    </target>\n\n    <target name="clean" description="Additionally purge ivy cache">\n        <delete dir="build"/>\n        <ivy:cleancache/>\n    </target>\n\n</project>\n
Run Code Online (Sandbox Code Playgroud)\n\n

笔记:

\n\n
    \n
  • Ivy 检索任务使用一种特殊模式,根据配置将文件放入不同的目录中。
  • \n
  • 分类器属性是可选的,因此用括号括起来。
  • \n
\n\n

常春藤.xml

\n\n
<ivy-module version="2.0">\n    <info organisation="com.myspotontheweb" module="demo"/>\n\n    <configurations>\n        <conf name="compile" description="Required to compile application"/>\n        <conf name="sources" description="Source code"/>\n        <conf name="javadoc" description="Javadocs"/>\n    </configurations>\n\n    <dependencies>\n        <dependency org="com.amazonaws" name="aws-java-sdk" rev="1.4.5" conf="compile->default;sources;javadoc"/>\n    </dependencies>\n\n</ivy-module>\n
Run Code Online (Sandbox Code Playgroud)\n\n

笔记:

\n\n
    \n
  • 配置映射由 3 部分组成:“compile->default”、“sources”、“javadoc”。
  • \n
\n\n

更新 - 第二个例子

\n\n

这次的替代目录布局:

\n\n
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 build\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 doc\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 aws-java-sdk-1.4.5-javadoc.jar\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 lib\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 aws-java-sdk-1.4.5.jar\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 commons-codec-1.3.jar\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 commons-logging-1.1.1.jar\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 httpclient-4.1.jar\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 httpcore-4.1.jar\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 jackson-core-asl-1.8.9.jar\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 jackson-mapper-asl-1.8.9.jar\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 src\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 aws-java-sdk-1.4.5-sources.jar\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 build.xml\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 ivy.xml\n
Run Code Online (Sandbox Code Playgroud)\n\n

构建.xml

\n\n
<project name="demo" default="build" xmlns:ivy="antlib:org.apache.ivy.ant">\n\n    <target name="build" description="Compile code">\n        <ivy:retrieve pattern="build/lib/[artifact]-[revision].[ext]" conf="compile"/>\n        <ivy:retrieve pattern="build/src/[artifact]-[revision](-[classifier]).[ext]" conf="sources"/>\n        <ivy:retrieve pattern="build/doc/[artifact]-[revision](-[classifier]).[ext]" conf="javadoc"/>\n    </target>\n\n    <target name="clean" description="Additionally purge ivy cache">\n        <delete dir="build"/>\n        <ivy:cleancache/>\n    </target>\n\n</project>\n
Run Code Online (Sandbox Code Playgroud)\n\n

笔记:

\n\n
    \n
  • 观察如何自定义每个检索任务以将文件放置在特定目录中。配置用于确定所使用的文件。配置是一种分组机制。
  • \n
  • 再次查看 ivy 文件中依赖项的“配置映射”。这就是决定ivy如何对下载的文件进行分类的魔力。
  • \n
  • 有关配置映射的更多详细信息,请参阅:ivy 如何将 maven 范围映射到 ivy 配置
  • \n
\n