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

本来项目是用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>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
maven-compiler-plugin是Maven的一个核心插件,它用于编译Java源代码。如果项目的源代码中使用了依赖jar包,那么这些jar包也需要被编译到项目中。 maven-compiler-plugin并不会自动将依赖jar包打包项目中,但是它可以通过配置参数来处理这些依赖jar包。一般来说,可以在pom.xml文件中通过dependency元素来声明内部依赖jar包,然后在maven-compiler-plugin的配置中添加classpath元素,将这些依赖jar包加入到编译的classpath中。 以下是一个示例配置: ```xml <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> <classpath> <dependency> <groupId>com.example</groupId> <artifactId>dependency1</artifactId> <version>1.0.0</version> </dependency> <dependency> <groupId>com.example</groupId> <artifactId>dependency2</artifactId> <version>1.0.0</version> </dependency> </classpath> </configuration> </plugin> </plugins> </build> ``` 在这个配置中,我们使用了maven-compiler-plugin插件,并在其配置中添加了classpath元素。classpath元素中包含了两个内部依赖jar包:dependency1和dependency2。这些jar包将被添加到编译的classpath中,使得项目可以正确地编译并运行。 在实际使用中,你需要将dependency元素替换为实际的内部依赖,以及修改groupId、artifactId和version等参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值