programa - Pasar argumentos de línea de comando a Java a través de script de compilación de ant
programa con parametros java (3)
No es bueno en Ant Script, pero hago algo como lo siguiente:
<target name="execute">
<echo> Running MyClass ......... </echo>
<java classname="pkg.MyClass" classpathref="libs">
<arg value="val1" /> <!-- command line args -->
<arg value="val2" />
<arg value="val3" />
<env key="k1" value="v1" /> <!-- set environmental value -->
</java>
</target>
Si está utilizando Eclipse, recibirá sugerencias en la ventana emergente bajo la etiqueta java. Tengo algunos más como: <sysproperty/>, <syspropertyset></syspropertyset>, <jvmarg/>
Al ejecutar el siguiente comando:
ant targetname -Dk1=v1 -Dk2=v2
Quiero que los parámetros de línea de comando pasen a java
, como java whatever -Dk1=v1 -Dk2=v2
.
Necesito acceder a estos parámetros desde el código de Java con System.getProperty
o System.getenv
.
¿Qué debo escribir en mi script de compilación de hormigas para que esto suceda?
¿O debería tomar otro enfoque por completo?
No estoy seguro exactamente de cómo quiere pasar estos valores, pero hay varios mecanismos:
- Utilice
<sysproperty>
para pasar las propiedades del sistema que necesita establecer: - Utilice
<arg>
para pasar argumentos de línea de comando a su clase Java - Utilice
<jvmarg>
para pasar argumentos a su comando de Java - Si bifurca su tarea Java, también puede establecer variables de entorno. Estos se ignoran si no se bifurca la tarea de Java
Esta:
$ foo=bar; java -Xlingc com.example.foo.bar -Dsys1=fu -Dsys2=barfu -arg1 -arg2 bar
Se convierte en:
<java classname="com.example.foo.bar"
fork="true">
<env key="foo" value="bar"/>
<sysproperty key="sys1" value="fu"/>
<sysproperty key="sys2" value="barfu"/>
<jvmarg value="-Xlingc"/>
<arg value="-arg1"/>
<arg value="-arg2"/>
<arg value="bar"/>
</java>
Espero que el ejemplo ayude
Utilice los elementos anidados <arg>
en su tarea <java>
:
<java classname="test.Main">
<arg value="${k1}"/>
<arg value="${k2}"/>
<classpath>
<pathelement location="dist/test.jar"/>
<pathelement path="${java.class.path}"/>
</classpath>
</java>