2010-01-14 2 views
6

Usiamo MSBuild per eseguire la nostra compilazione che compila ed emette un numero di progetti/assiemi .NET. Ora ci troviamo di fronte alla necessità di includere anche una versione java delle nostre assemblee e siamo incerti su come dovremmo procedere per integrare la costruzione di questo sorgente java in MSBuild.Costruire java da MSBuild

C'è sempre la possibilità di eseguire il bombardamento a un prompt dei comandi e di eseguire manualmente la compilazione e la compilazione, ma ci sono altri modi più eleganti di consumare la costruzione di java in MSBuild?

risposta

2

Il Exec task è la cosa perfetta. Facile, funziona. Non sono sicuro se questo è ciò che intendi per "Shell out".

+0

"Shell out" era in realtà una chiamata al task Exec .... solo che ci richiederebbe un sacco di digitazione manuale e di mantenere i riferimenti dei file java corretti. Cercavo un modo per eliminare il fattore umano ... –

+1

Invece di chiamare direttamente javac e jar, puoi chiamare ant e speficy la parte Java in un build.xml che mantieni come parte della tua base di codice. – rsp

0

Creare il proprio compito MSBuild per compilare java è possibile (ho fatto uno per compilare il codice VB6 con MSBuild), ma se è una buona idea è un'altra questione .. (YAGNI e tutto ciò che)

Se il bombardamento verso la linea di comando funziona, potrebbe essere solo una cosa OK da fare.

Il mio istinto sta dicendo shell out su un processo Ant poiché Ant ne sa qualcosa in più su Java.

0

Scriverei attività personalizzata per chiamare "Ant" da MSBuild.

https://github.com/sumi2/AntTask

È possibile chiamare lo script Ant come seguire

<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)" 
/>