Where The Streets Have No Name

jar로 배포할 때 참조하는 여러 라이브러리를 하나로 배포 본문

Developement/Java

jar로 배포할 때 참조하는 여러 라이브러리를 하나로 배포

highheat 2020. 10. 11. 16:04

ant를 이용하면 현재 개발하는 eclipse project를 jar로 빌드하면서 참조하는 라이브러리를 하나로 합치는 기능이 있습니다.

<project name="netClient" default="jar" basedir=".">
	<description>
		   공통모듈
	</description>
	<!-- set global properties for this build -->
	<property name="src.dir" location="src" />
	<property name="build.dir" location="bin" />
	<property name="dist.dir" location="dist" />
	<property name="dist.lib.dir" location="dist/lib" />
	<property name="lib.dir" location="lib" />

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

	<!-- Group all dependencies into a big hieClient.jar -->
	<target name="copy-dependencies">

		<mkdir dir="${dist.lib.dir}" />

		<jar jarfile="${dist.lib.dir}/dependencies-all.jar">
			<zipgroupfileset dir="${lib.dir}">
				<include name="**/*.jar" />
			</zipgroupfileset>
		</jar>

	</target>

	<!-- jar it, extract above dependency-all.jar and zip it with project files -->
	<target name="jar" depends=" copy-dependencies" description="package, output to JAR">

		<mkdir dir="${dist.dir}" />
		<mkdir dir="${dist.lib.dir}" />

		<jar jarfile="${dist.dir}/${ant.project.name}.jar" basedir="${build.dir}">
			<zipfileset src="${dist.lib.dir}/dependencies-all.jar" excludes="META-INF/*.SF" />
		</jar>

	</target>

	<target name="jar2" description="package, output to JAR">

		<mkdir dir="${dist.dir}" />

		<jar jarfile="${dist.dir}/${ant.project.name}.jar" basedir="${build.dir}">
			<zipgroupfileset dir="${lib.dir}">
				<include name="**/*.jar" />
				<exclude name="META-INF/*.SF"/>
			</zipgroupfileset>
		</jar>

	</target>

</project>

copy-dependencies, jar 두개의 task로 작업이 가능하면 jar2는 이두개를 하나로 합친경우입니다.

참고 : https://mkyong.com/ant/ant-create-a-fat-jar-file/