2010-01-14 21 views
6

Wir verwenden MSBuild, um unseren Build auszuführen, der eine Reihe von .NET-Projekten/Assemblys kompiliert und ausgibt. Nun stehen wir vor der Notwendigkeit, auch eine Java-Version einer unserer Assemblies einzubauen und sind unsicher, wie wir das Bauen dieser Java-Quelle in MSBuild integrieren sollten.Erstellen von Java von MSBuild

Es gibt immer die Option, eine Eingabeaufforderung auszufüllen und die Kompilierung und JAR'-Operation manuell durchzuführen. Gibt es aber noch andere und elegantere Möglichkeiten, Java Building in MSBuild zu verwenden?

Antwort

2

Die Exec task ist die perfekte Sache. Einfach, funktioniert. Nicht sicher, ob du das mit "Shell out" meinst.

+0

'Shell out' war eigentlich ein Aufruf an die Exec-Aufgabe .... nur würde es uns erfordern, viel manuelle Eingabe zu machen und die Java-Dateireferenzen korrekt zu halten. War auf der Suche nach einer Möglichkeit, den menschlichen Faktor herauszuholen ... –

+1

Anstatt javac und jar direkt aufzurufen, kannst du ant und speficy den Java-Teil in einer build.xml aufrufen, die du als Teil deiner Code-Basis behältst. – rsp

0

Erstellen Ihrer eigenen msbuild Aufgabe Java möglich zu kompilieren (ich habe einen gemacht VB6-Code mit MSBuild zu kompilieren), aber wenn es eine gute Idee ist, ist eine andere Frage .. (YAGNI und das alles)

Wenn Wenn man die Befehlszeile auscheckt, funktioniert es vielleicht einfach gut.

Mein Bauchgefühl sagt Shell zu einem Ant-Prozess, seit Ant ein bisschen mehr über Java weiß.

0

Ich würde benutzerdefinierte Aufgabe schreiben, um "Ant" von MSBuild aufrufen.

https://github.com/sumi2/AntTask

können Sie Ant-Skript aufrufen wie folgt

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