【问题标题】:Building java from MSBuild从 MSBuild 构建 java
【发布时间】:2011-01-05 00:20:45
【问题描述】:

我们正在使用 MSBuild 运行我们的构建,它编译并输出许多 .NET 项目/程序集。现在我们还需要在我们的程序集中包含一个 java 版本,并且不确定我们应该如何将这个 java 源的构建集成到 MSBuild 中。

总是可以选择打开命令提示符并让它手动执行编译和 jar'ing,但是还有其他更优雅的方法可以在 MSBuild 中使用 java 构建吗?

【问题讨论】:

    标签: java msbuild integration


    【解决方案1】:

    Exec task 是完美的东西。简单,有效。不确定这是否是您所说的“脱壳”。

    【讨论】:

    • 'Shell out' 实际上是对 Exec 任务的调用......只是它需要我们进行大量手动输入并保持 Java 文件引用正确。正在寻找一种消除人为因素的方法...
    • 您可以调用 ant 并在 build.xml 中指定 Java 部分,而不是直接调用 javac 和 jar,并将其保留为代码库的一部分。
    【解决方案2】:

    我正在使用Microsoft's Team Foundation Server Build Extensions Power Tool December 2011

    它有一个用于 MSBuild 的 Ant 任务。

    文档似乎很少,但它来自Teamprise Build Extensions,它有一个很好的 pdf 手册。

    @tsu1980 的帖子有一个很好的 MSBuild 代码示例。

    【讨论】:

      【解决方案3】:

      创建你自己的 msbuild 任务来编译 java 是可能的(我已经做了一个用 MSBuild 编译 VB6 代码),但如果这是一个好主意是另一个问题..(YAGNI 等等)

      如果使用命令行确实有效,那可能是件好事。

      我的直觉是要对 Ant 进程进行脱壳,因为 Ant 对 Java 了解得更多。

      【讨论】:

        【解决方案4】:

        我会编写自定义任务以从 MSBuild 调用“Ant”。

        https://github.com/sumi2/AntTask

        你可以像下面这样调用 Ant 脚本

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-04-10
          • 2013-06-23
          • 1970-01-01
          • 1970-01-01
          • 2012-09-26
          • 2017-12-05
          • 1970-01-01
          相关资源
          最近更新 更多