명령 행 인수로 프로그램 실행에 Ant 사용
내 프로그램이 명령 줄 인수를 받고 있습니다. Ant를 사용할 때 어떻게 통과 할 수 있습니까?
Richard Cook 의 대답을 확장합니다 .
다음은 ant
모든 프로그램 (Java 프로그램을 포함하되 이에 국한되지 않음)을 실행 하는 작업입니다.
<target name="run">
<exec executable="name-of-executable">
<arg value="${arg0}"/>
<arg value="${arg1}"/>
</exec>
</target>
다음은 .jar
파일 에서 Java 프로그램을 실행하는 작업입니다 .
<target name="run-java">
<java jar="path for jar">
<arg value="${arg0}"/>
<arg value="${arg1}"/>
</java>
</target>
다음과 같이 명령 줄에서 호출 할 수 있습니다.
ant -Darg0=Hello -Darg1=World run
-Darg
구문 을 사용해야 합니다. 이것을 실행 한 경우 :
ant run arg0 arg1
그런 다음 ant
대상 arg0
및 arg1
.
가능한 각 인수에 대해 별도의 속성을 처리하지 않으려면 다음을 사용하는 것이 좋습니다.
<arg line="${args}"/>
속성이있는 특정 대상을 사용하여 속성이 설정되지 않았는지 확인할 수 있습니다 unless
.
<input message="Type the desired command line arguments:" addProperty="args"/>
모두 합치면 다음과 같은 이점이 있습니다.
<target name="run" depends="compile, input-runargs" description="run the project">
<!-- You can use exec here, depending on your needs -->
<java classname="Main">
<arg line="${args}"/>
</java>
</target>
<target name="input-runargs" unless="args" description="prompts for command line arguments if necessary">
<input addProperty="args" message="Type the desired command line arguments:"/>
</target>
다음과 같이 사용할 수 있습니다.
ant
ant run
ant run -Dargs='--help'
처음 두 명령은 명령 줄 인수를 묻는 메시지를 표시하지만 후자는 그렇지 않습니다.
매개 변수를 빌드에 전달하는 유일한 효과적인 메커니즘은 Java 속성을 사용하는 것입니다.
ant -Done=1 -Dtwo=2
다음 예제는 예상 매개 변수가 스크립트에 전달되었는지 확인하고 확인하는 방법을 보여줍니다.
<project name="check" default="build">
<condition property="params.set">
<and>
<isset property="one"/>
<isset property="two"/>
</and>
</condition>
<target name="check">
<fail unless="params.set">
Must specify the parameters: one, two
</fail>
</target>
<target name="build" depends="check">
<echo>
one = ${one}
two = ${two}
</echo>
</target>
</project>
무엇을하려고하는지, 어떻게하려고하는지 좀 더 구체적으로 말씀해 주시겠습니까?
<exec>
작업을 사용하여 프로그램을 호출하려는 경우 다음을 수행 할 수 있습니다.
<exec executable="name-of-executable">
<arg value="arg0"/>
<arg value="arg1"/>
</exec>
결국 내가 한 일은 배치 파일을 만들어 개미 파일에서 CLASSPATH를 추출한 다음 다음을 사용하여 Java를 직접 실행하는 것입니다.
내 build.xml에서 :
<target name="printclasspath">
<pathconvert property="classpathProp" refid="project.class.path"/>
<echo>${classpathProp}</echo>
</target>
'run.sh'라는 다른 스크립트에서 :
export CLASSPATH=$(ant -q printclasspath | grep echo | cut -d \ -f 7):build
java "$@"
It's no longer cross-platform, but at least it's relatively easy to use, and one could provide a .bat file that does the same as the run.sh. It's a very short batch script. It's not like migrating the entire build to platform-specific batch files.
I think it's a shame there's not some option in ant whereby you could do something like:
ant -- arg1 arg2 arg3
mpirun uses this type of syntax; ssh also can use this syntax I think.
ReferenceURL : https://stackoverflow.com/questions/3730880/use-ant-for-running-program-with-command-line-arguments
'development' 카테고리의 다른 글
matplotlib에서 ticklabel과 축 사이에 공간을 어떻게 추가합니까? (0) | 2021.01.06 |
---|---|
정규식 문자 대괄호에 하이픈을 포함합니까? (0) | 2021.01.06 |
Div 테이블 셀 세로 정렬이 작동하지 않음 (0) | 2021.01.06 |
여러 C 프로그램을 컴파일하기위한 Makefile? (0) | 2021.01.06 |
Rails 컨트롤러에서 HTTP 204를 반환하는 방법 (0) | 2021.01.06 |