Apache Ant Manifest Class-Path?
-
22-08-2019 - |
문제
Java 프로젝트를위한 표준 프로젝트 레이아웃이 있습니다.
project /
src /
source_file_1.java
...
source_file_N.java
build /
classes /
source_file_X.class
...
jar /
MyJar.jar
lib /
SomeLibrary.jar
SomeOtherLibrary.jar
내가 알 수있는 한, 나는 ANT와 함께 프로젝트를 올바르게 구축하고 있습니다. 클래스가 필요한 라이브러리를 사용할 수 있도록 Manifest 파일에 클래스-패스 속성을 설정해야합니다.
build.xml의 다음과 관련된 정보
<target name="compile" depends="init">
<javac srcdir="src" destdir="build\classes">
<classpath id="classpath">
<fileset dir="lib">
<include name="**/*.jar" />
</fileset>
</classpath>
</javac>
</target>
<target name="jar" depends="compile">
<jar destfile="build\jar\MyJar.jar" basedir="build\classes" >
<manifest>
<attribute name="Built-By" value="${user.name}" />
</manifest>
</jar>
</target>
올바른 방향으로의 밀기는 감사합니다. 감사
해결책
내 netbeans 생성 빌드 파일을보고, 나는이 스 니펫을 -do-jar-with-libraries
직무:
<manifest>
<attribute name="Main-Class" value="${main.class}"/>
<attribute name="Class-Path" value="${jar.classpath}"/>
</manifest>
다시 말해, 이미 가지고있는 매니페스트 작업에 다른 속성을 추가하면됩니다.
참조 작업 문서를 표시합니다.
다른 팁
라이브러리가 컴파일에서 JAR 파일 실행까지 위치를 변경하지 않는다고 가정하면 컴파일 대상 외부의 클래스 경로에 대한 경로 요소를 만들 수 있습니다.
<path id="compile.classpath">
<fileset dir="lib" includes="**/*.jar"/>
</path>
그런 다음 현재 ClassPath 대신 Javac 작업 내부의 생성 된 경로를 사용할 수 있습니다.
<classpath refid="compile.classpath"/>
그런 다음 경로를 사용하여 ManifestClassPath를 설정할 수 있습니다.
<target name="jar" depends="compile">
<manifestclasspath property="jar.classpath" jarfile="build\jar\MyJar.jar">
<classpath refid="compile.classpath"/>
</manifestclasspath>
<jar destfile="build\jar\MyJar.jar" basedir="build\classes" >
<manifest>
<attribute name="Built-By" value="${user.name}" />
<attribute name="Class-Path" value="${jar.classpath}"/>
</manifest>
</jar>
</target>
ManifestClassPath는 Manifest 파일에서 사용하기 위해 적절한 형식의 클래스 경로를 생성하며, 이는 72 자 후에 래핑해야합니다. 많은 JAR 파일이나 긴 경로가 포함 된 긴 클래스 경로는 ManifestClassPath 작업을 사용하지 않으면 올바르게 작동하지 않을 수 있습니다.
제휴하지 않습니다 StackOverflow