동일한 API를 준수하는 플러그인을 빌드하는 개미 프로젝트가 여러 개 있습니다. 플러그인은 자체적으로 포함되도록 타사 라이브러리를 사용합니다. 개별 빌드 스크립트의 많은 동작이 유사하기 때문에 공통 부분을 공통 빌드 스크립트로 끌어 내기로 결정했습니다.개미 스크립트의 일반적인 jar 작업
원래 빌드 스크립트는 다음과 같이보고 :
PROJECTA/build.xml 파일 :
<project name="ProjectA" basedir=".">
...
<target name="jar">
<jar destfile="${project.target}" manifest="manifest.mf">
<fileset dir="${project.build.bin.dir}" />
<zipfileset src="externlib1.jar" />
<zipfileset src="externlib2.jar" />
</jar>
</target>
...
</project>
ProjectB/build.xml 파일 :
여기<project name="ProjectB" basedir=".">
...
<target name="jar">
<jar destfile="${project.target}" manifest="manifest.mf">
<fileset dir="${project.build.bin.dir}" />
<zipfileset src="externlib2.jar" />
<zipfileset src="externlib3.jar" />
</jar>
</target>
...
</project>
내 빌드 스크립트를 볼 것입니다 리팩토링 후 :
Common.xml :
,<project name="Common" basedir=".">
...
<target name="jar">
<jar destfile="${project.target}" manifest="common-manifest.mf">
<fileset dir="${project.build.bin.dir}" />
<zipfileset refid="extern.libs" />
</jar>
</target>
...
</project>
PROJECTA/build.xml 파일 :
<project name="ProjectA" basedir=".">
...
<zipfileset id="extern.libs">
<file file="externlib1.jar" />
<file file="externlib2.jar" />
</zipfileset>
...
<import file="../common.xml" />
</project>
ProjectB/build.xml 파일 :
<project name="ProjectB" basedir=".">
...
<zipfileset id="extern.libs">
<file file="externlib2.jar" />
<file file="externlib3.jar" />
</zipfileset>
...
<import file="../common.xml" />
</project>
그러나, 리팩토링 빌드가 작동하지 않습니다 - 나는 문제가 있다는 것을 생각 I 여러 개의 파일이있는 zip 파일 세트를 선언 할 수 없습니다.
공통 jar 태스크의 동작이 각 프로젝트의 빌드 스크립트에서 jar 태스크가 선언 된 동작과 동일하도록 파일 세트를 선언 할 수있는 방법을 이해할 수 없습니다. 누구든지 전에이 문제를 해결 했습니까? 같은 것을 성취 할 수있는 다른 방법이 있습니까?
zip 파일 세트에 포함 된 항아리는 모두 최종 프로젝트 병으로 확장되지 않습니다.
iboisver
@iboisver - 그것을 개정했습니다. 거기서 근본적으로 빠진 것 - 사과. 나는 이것에 대한 테스트를 해봤고 그것이 저에게 효과가있는 것처럼 보입니다. –