解决的问题(Ant在项目中编译后打JAR包直接发布到Nexus中)
1、ivy.xml
<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd"> <info organisation="com.targtime" module="tagedb" status="integration" revision="1.0"> </info> <!-- 定要发布的jar --> <publications> <artifact name="tagedb" type="jar" ext="jar" /> </publications>
2、ivysettings.xml
<?xml version="1.0" encoding="UTF-8"?> <ivysettings> <settings defaultResolver="nexus"/> <credentials host="mvn.magicwall.org" realm="Sonatype Nexus Repository Manager" username="yourname" passwd="yourpwd"/> <property name="nexus-public" value="http://mvn.magicwall.org:8081/nexus/content/groups/public"/> <property name="nexus-releases" value="http://mvn.magicwall.org:8081/nexus/content/repositories/releases"/> <property name="nexus-snapshots" value="http://mvn.magicwall.org:8081/nexus/content/repositories/snapshots"/> <resolvers> <ibiblio name="nexus" m2compatible="true" root="${nexus-public}"/> <ibiblio name="nexus-releases" m2compatible="true" root="${nexus-releases}"/> <ibiblio name="nexus-snapshots" m2compatible="true" root="${nexus-snapshots}" /> </resolvers> </ivysettings>
3、build.xml(重点在这里)
<project default="create-jar" xmlns:ivy="antlib:org.apache.ivy.ant"> <property name="build.dir" value="classes" /> <property name="src.dir" value="src" /> <property name="lib.dir" value="lib" /> <property name="jar.name" value="tagedb" /> <property name="publish.revision" value="1.0" /> <path id="master-classpath"> <fileset dir="${lib.dir}"> <include name="*.jar" /> </fileset> </path> <target name="clean" description="Clean output dirs (build, weblib, dist)"> <echo>clean build dir</echo> <delete dir="${build.dir}" /> <mkdir dir="${build.dir}" /> <delete dir="dist" /> <mkdir dir="dist" /> </target> <!-- 项目编译打成jar包 --> <target name="create-jar" depends="clean"> <javac srcdir="${src.dir}" destdir="${build.dir}"> <classpath refid="master-classpath" /> </javac> <jar destfile="dist/${jar.name}.jar" basedir="${build.dir}" /> </target> <!-- ivy.xml转换成pom的配置文件(可以手动以pom文件的形式上传jar到nexus仓库中) --> <target name="prepare" description="Generate POM" depends="create-jar"> <!-- Generate the Maven POM --> <ivy:makepom ivyfile="ivy.xml" pomfile="${jar.name}.pom" /> </target> <!-- nexus仓库中的jar下载到缓存中 --> <target name="resolve" description="retreive dependencies with ivy"> <!-- <ivy:configure file="../ivysettings.xml" /> <ivy:resolve file="my-ivy.xml" conf="default, myconf" /> --> <ivy:resolve /> </target> <!-- 取得缓存中的jar放到指定目录 --> <target name="retrieve" depends="resolve"> <ivy:retrieve pattern="lib/[artifact]-[revision].[ext]" conf="default" /> </target> <!--* 用ant编译后打包发布到nexus中 *--> <target name="publish" depends="resolve,prepare" description="Upload to Nexus"> <ivy:publish resolver="nexus-releases" pubrevision="${publish.revision}"> <artifacts pattern="dist/[artifact].[ext]" /> </ivy:publish> </target> </project>
最后用ant执行build.xml就可以再nexus中看到我们上次的jar了。