Ant打包Maven项目—-解压依赖Jar包

Ant打包Maven项目—-解压依赖Jar包本来项目是用Maven管理依赖,用MavenShade打包的(其它打包打包完了无法运行)。领导要求改为Ant打包,本来Mave就是菜鸡,Ant都没用过的我简直啧啧。找了各种插件,MavenAnt自动生成build,可以直接打包,但是我这边打包完了之后所有依赖都没打包,只打包了源码。gg然后找到AntTask-官网说已废弃,但是新版本搜不到教程,也没有一个正儿八经的文档,所以还是用的老版的AntTask。跟着教程和手册读取了Maven的pom.xml,将所有依赖的jar包都导进来了,但是,无法运行,和M

本来项目是用Maven管理依赖,用MavenShade打包的(其它打包打包完了无法运行)。领导要求改为Ant打包,本来Mave就是菜鸡,Ant都没用过的我简直啧啧。

找了各种插件,Maven Ant自动生成build,可以直接打包,但是我这边打包完了之后所有依赖都没打包,只打包了源码。gg

然后找到AntTask-官网说已废弃,但是新版本搜不到教程,也没有一个正儿八经的文档,所以还是用的老版的AntTask。跟着教程和手册读取了Maven的pom.xml,将所有依赖的jar包都导进来了,但是,无法运行,和MavenShade打包的文件对比,发现MavenShade打包的文件里,所有的jar都是解压出来的,而AntTask打包出来的依赖都是原封不动的Jar

这里提供一个AntTask打包,将依赖Jar解压进来,而不是复制进来的build.xml,这个xml是Maven Ant自动生成的基础上修改的,删去了路径,测试等和这篇文章主题无关的内容。

目录结构看起来没问题了,但是运行的时候还是会各种报错,解决了再更新。

好的,最后发现就是资源文件没复制进来,用拖进来就行了,那就是没问题。只不过ANT打包之后以前会在Shell输出的日志都没了,搞得我有点不适应

//前几行是引入maven-ant-tasks jar包,并将pom.xml引入,读取其依赖,生成一个fileSet
  <path id="maven-ant-tasks.classpath" path="./lib/maven-ant-tasks-2.1.3.jar" />
  <typedef resource="org/apache/maven/artifact/ant/antlib.xml" uri="antlib:org.apache.maven.artifact.ant" classpathref="maven-ant-tasks.classpath" />
  <artifact:pom id ="mypom" file ="pom.xml" />
  <artifact:dependencies filesetId ="mydepsfid" pathId="mydepspid" pomRefId ="mypom" />
  
  <target name="compile" description="Compile the code">
    <mkdir dir="${maven.build.outputDir}"/>
    <javac destdir="${maven.build.outputDir}" 
           nowarn="false" 
           debug="true" 
           optimize="false" 
           deprecation="true" 
           target="1.8" 
           verbose="false" 
           fork="false" 
           source="1.8"
    	   includeantruntime="false">
      <src>
        <pathelement location="${maven.build.srcDir.0}"/>
      </src>
      <classpath refid="mydepspid"/>
    </javac>
    //将Jar包解压--我的maven.build.outputDir目录是target/classes
  	<unzip dest="${maven.build.outputDir}">
  	    <fileset refid ="mydepsfid" />
  	</unzip>
  </target>

  <target name="package" depends="compile" description="Package the application">
    <jar jarfile="${maven.build.dir}/${maven.build.finalName}.jar" 
         compress="true" 
         index="false" 
         basedir="${maven.build.outputDir}" 
         excludes="**/package.html">
    	<manifest>
    		//指定Main-Class
    		<attribute name="Main-Class" value="com.trs.xcrawler.server.XcrawlerServer"/>
    	</manifest>
    </jar>
  </target>

  <target name="jar" depends="package" description="Builds the jar for the application"/>
</project>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/35458.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注