2012-03-02 1 views
14

Ant 스크립트에서 JVM에 전달할 일련의 인수가 포함 된 속성이 있습니다.Ant, jvmarg, 시스템 속성 및 따옴표

예 (두 번째 항목에서 따옴표주의) : 내가 예상 결과를 얻을 echo 목표 변수의 내용을 인쇄 할 경우

-Dsql.driver=oracle.jdbc.driver.OracleDriver -Dapp.datasource-properties=URL='jdbc:oracle:thin:@//192.168.56.42:1521/xe':User=user:Password=password 

<echo message="${jvm.arguments}"/> 

생산
-Dsql.driver=oracle.jdbc.driver.OracleDriver -Dapp.datasource-properties=URL='jdbc:oracle:thin:@//192.168.56.42:1521/xe':User=user:Password=password 

그런 다음 변수를 JVM에 대한 인수로 사용합니다.

예 : 따옴표가 자동으로 제거됩니다

<junit fork="true" forkmode="once" showoutput="true" printsummary="on"> 
    <jvmarg 
     line="-XX:MaxPermSize=256m -Xms1024M ${jvm.arguments}" 

. 개미의 자세한 출력은 나에게 준다

[junit] Executing '/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java' with arguments: 
[junit] '-XX:MaxPermSize=256m' 
[junit] '-Xms1024M' 
[junit] '-Dsql.driver=oracle.jdbc.driver.OracleDriver' 
[junit] '-Dapp.datasource-properties=URL=jdbc:oracle:thin:@//192.168.56.42:1521/xe:User=user=password' 

따옴표가있는 JVM으로 시스템 등록 정보를 전달하려면 어떻게해야합니까? (싱글 또는 더블)?

효과없이 큰 따옴표를 사용하여 이스케이프 처리를 시도했습니다.

답변

14

나는 -debug와

ant tests -Djvmargs=\'jdbc:oracle:thin:@//192.168.56.42:1521/xe\':User=user:Password=password -debug 

출력은 선은 예상하고있다 ... 단일 값 다음이 다음 행으로 호출

<jvmarg value="-ea"/> 
<jvmarg value="-Dapp.URL=URL=${jvmargs}"/> 

<jvmarg>를 사용합니다.

[junit] '-ea' 
[junit] '-Dapp.URL=URL='jdbc:oracle:thin:@//192.168.56.42:1521/xe':User=user:Password=password' 

line은 공백으로 분리 된 인수를 처리하기위한 것입니다. 그것은 공백으로 입력을 처리하기 위해 추가 구문 분석 및 처리를 수행 할 수 있습니다. 아직 코드를 확인하지 않았습니다.