[英]How to add a MANIFEST file usig cmake and module UseJava?
Goal is simple. 目标很简单。 adding a MANNIFEST file into final jar archive.
将MANNIFEST文件添加到最终的jar存档中。
For this I read many documentation but i miss the right information. 为此,我阅读了许多文档,但是我错过了正确的信息。 Finally I come to you to get some help, thanks in advance.
最后,我要向您寻求帮助,在此先感谢您。
What I do ? 我所做的 ?
cmake_minimum_required(VERSION 2.8)
find_package(Java REQUIRED)
include(UseJava)
enable_testing()
project(DAI)
set( cwd "${CMAKE_CURRENT_SOURCE_DIR}" )
set( AIName "SkirmishDAI" )
set( SRC_DIR "${cwd}/src" )
set( LIB_DIR "${cwd}/libs" )
set( MAJOR_VERSION 0 )
set( MINOR_VERSION 1 )
set( PATCH_VERSION 0 )
set( VERSION "${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}" )
set( CMAKE_JAVA_INCLUDE_PATH "${LIB_DIR}" )
set( CMAKE_JAVA_COMPILE_FLAGS "-source" "1.7" "-target" "1.7" )
set( DAI_JAR_NAME "${AIName}-${VERSION}.jar" )
set( DAI_JAR_FILE "${CMAKE_JAVA_TARGET_OUTPUT_DIR}/${DAI_JAR_NAME}" )
set( DAI_MANIFEST "${CMAKE_CURRENT_BINARY_DIR}/META-INF/MANIFEST.MF" )
configure_file("manifest.extras.in" "${DAI_MANIFEST}" @ONLY )
FILE( GLOB_RECURSE JAVA_SRC_FILES "${SRC_DIR}/main/java/*.java" )
FILE( GLOB_RECURSE JAVA_TEST_FILES "${SRC_DIR}/test/java/*.java" )
add_jar( ${AIName} ${JAVA_SRC_FILES} ${JAVA_TEST_FILES} VERSION ${VERSION} MANIFEST ${DAI_MANIFEST} )
This will add into the jar file a manifest … but a wrong place. 这会将清单添加到jar文件中,但是位置不正确。
That mean, when manifest go to ${CMAKE_CURRENT_BINARY_DIR}/META-INF/MANIFEST.MF , I will get the same full path in the jar file intead of META-INF/MANIFEST.MF 这意味着,当清单转到$ {CMAKE_CURRENT_BINARY_DIR} /META-INF/MANIFEST.MF时 ,我将在META-INF / MANIFEST.MF的jar文件intead中获得相同的完整路径。
jarfile jar文件
/
/com/cool/app/Main.class
/mypath/to/bin/dir/META-INF/MANIFEST.MF
while I expect to get 虽然我希望得到
jarfile jar文件
/
/com/cool/app/Main.class
/META-INF/MANIFEST.MF
UPDATE : Make run following command: 更新 :使运行以下命令:
$ make VERBOSE=1
…
[ 31%] Creating Java archive SkirmishDAI-0.1.0.jar
cd /mnt/data/projects/spring/build/AI/Skirmish/DAI/CMakeFiles/SkirmishDAI.dir && /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65-2.5.2.5.fc20.x86_64/bin/jar -cf /mnt/data/projects/spring/build/AI/Skirmish/DAI/SkirmishDAI-0.1.0.jar /mnt/data/projects/spring/build/AI/Skirmish/DAI/META-INF/MANIFEST.MF @java_class_filelist
cd /mnt/data/projects/spring/build/AI/Skirmish/DAI/CMakeFiles/SkirmishDAI.dir && /usr/bin/cmake -D_JAVA_TARGET_DIR=/mnt/data/projects/spring/build/AI/Skirmish/DAI -D_JAVA_TARGET_OUTPUT_NAME=SkirmishDAI-0.1.0.jar -D_JAVA_TARGET_OUTPUT_LINK=SkirmishDAI.jar -P /usr/share/cmake/Modules/UseJavaSymlinks.cmake.
…
The problem likely stems from a duplicated path in the following lines: 该问题可能源于以下几行中的重复路径:
set( DAI_MANIFEST "${CMAKE_CURRENT_BINARY_DIR}/META-INF/MANIFEST.MF" )
configure_file("manifest.extras.in" "${CMAKE_CURRENT_BINARY_DIR}/${DAI_MANIFEST}" @ONLY )
You probably meant: 您可能的意思是:
set( DAI_MANIFEST "${CMAKE_CURRENT_BINARY_DIR}/META-INF/MANIFEST.MF" )
configure_file("manifest.extras.in" "${DAI_MANIFEST}" @ONLY )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.