2010-01-14 18 views
6

Estamos utilizando MSBuild para ejecutar nuestra compilación que compila y da salida a una cantidad de proyectos/ensamblados de .NET. Ahora nos enfrentamos a la necesidad de incluir también una versión java de uno de nuestros ensamblajes y no estamos seguros de cómo debemos integrar la construcción de esta fuente java en MSBuild.Building java from MSBuild

Siempre existe la opción de pagar en un símbolo del sistema y hacer que realice la compilación y el envío manual, pero ¿hay alguna otra manera más elegante de consumir la creación de java en MSBuild?

Respuesta

2

El Exec task es lo perfecto. Fácil, funciona. No estoy seguro de si eso es lo que quiere decir con "Shell out".

+0

'Shell out' era en realidad una llamada a la tarea Exec ... solo nos exigiría hacer mucha escritura manual y mantener las referencias correctas del archivo java. Estaba buscando una manera de sacar el factor humano ... –

+1

En lugar de llamar directamente a javac y jar, puede llamar a ant y especifique la parte de Java en un build.xml que guarda como parte de su base de código. – rsp

0

La creación de su propia tarea msbuild para compilar java es posible (he hecho una a compilar el código de VB6 con MSBuild), pero si es una buena idea, es otra cuestión .. (YAGNI y todo eso)

Si bombardear a la línea de comando funciona, puede ser una buena decisión.

Mi instinto me dice que vayas a un proceso Ant porque Ant sabe un poco más sobre Java.

0

Escribiría tareas personalizadas para llamar a 'Ant' desde MSBuild.

https://github.com/sumi2/AntTask

Puede llamar script Ant como seguir

<PropertyGroup> 
    <JavaHome>$(MSBuildProjectDirectory)\build\tools\jdk1.6.0_25</JavaHome> 
    <AntHome>$(MSBuildProjectDirectory)\build\tools\apache-ant-1.8.2</AntHome> 
</PropertyGroup> 

<!-- Call Ant with 'jar' target. --> 
<Ant 
    BuildFile="$(MSBuildProjectDirectory)\YourJavaProject\build.xml" 
    Target="jar" 
    AntHome="$(AntHome)" 
    JavaHome="$(JavaHome)" 
/>