【问题标题】:How to run `ant` build-script without setting any environment variable?如何在不设置任何环境变量的情况下运行`ant`构建脚本?
【发布时间】:2013-04-10 23:31:42
【问题描述】:

我想运行ant 构建脚本而不安装Java 并将pathJAVA_HOMEANT_HOME 等任何环境变量设置为环境变量。

我已将Jdk-1.7u17Jre-1.7u17apache-ant-1.9.0 的已安装文件夹从一台机器复制到另一台机器到C:\buildscript_required_files_v2 文件夹中。

现在我有一个窗口批处理文件,它进入 build.xml 所在的路径并运行 ant

cd VersionBuild
C:\buildscript_required_files_v2\apache-ant-1.9.0\bin\ant

build.xml 编译 Java 类并创建一个 Jar 文件。

<project name="VersionBuild"  default="clean" basedir=".">
    <description>
        simple example build file
    </description>

  <!-- set global properties for this build -->


  <target name="init">
    <!-- Create the time stamp -->
    <tstamp/>
    <!-- Create the build directory structure used by compile -->


 </target>

 <target name="CompilingBuildversion" depends="init"
        description="compile the source " >
    <!-- Compile the java code from ${src} into ${build} -->
    <C:\buildscript_required_files_v2\java\jdk64\bin\javac.exe srcdir="." destdir="."/>
  </target>

  <target name="Creating jar" depends="CompilingBuildversion">
      <jar jarfile="VersionBuild.jar"  basedir="."/>
 </target>    


 <target name="clean" depends="Creating jar">

 </target>

</project>

当我运行那个 bach 文件时,我得到了以下异常 -

Unable to locate tools.jar. Expected to find it in C:\Program Files\Java\jre6\li
b\tools.jar

我可以在不安装Java 和设置任何环境变量的情况下运行ant build-script 吗?我可以在本地将 JAVA_HOME 指定为 ant 到 build.xml 以便 ant 可以从 C:\buildscript_required_files_v2 文件夹中获取引用吗?

【问题讨论】:

  • ant 是一个Java 库。
  • 如果我没记错的话,tools.jar 应该在 JDK 而不是 JRE 中,你应该指向 JDK。如果您询问如何更改,请忽略此评论。
  • 不安装Java怎么能运行Java程序,这没有意义?
  • @AshishPancholi 那个还在考虑安装Java,即使你不使用官方安装程序,你仍然需要运行时,没有运行时你无法运行Java程序。
  • @AshishPancholi,你在争论语义。执行 Java 程序需要 Java 运行时。如何获取 Java 运行时是另一回事。

标签: java ant build jar build-process


【解决方案1】:

您的问题与 *_HOME 变量无关,但我首先回答您的问题。 是的,你可以。

只需将您的 PATH 变量配置为 (1) java.exe 所在的目录 (2) ant.bat 所在的目录。 如果 *_HOME 定义了路径可以写:

PATH=...;%JAVA_HOME%\bin;%ANT_HOME%

由于您没有需要声明的此类变量:

PATH=...;C:\Program Files\Java\bin;c:\ant\bin

但实际上你的问题是你尝试使用 JRE 而 ant 需要 JDK。只需从 oracle 网站下载。 tools.jar 是 JDK 的一部分,但不是 JRE。

更新: 您可以编写自己的 bat 文件,让 Windows 知道在哪里可以找到 .exe.bat 文件。只需在记事本中创建名为 my-ant.bat 的文本文件并在此处放置以下内容:

set JAVA_HOME=C:\buildscript_required_files_v2\java\jdk64
set PATH=%PATH%;%JAVA_HOME%\bin;C:\buildscript_required_files_v2\apache-ant-1.9.0\bin
rem ** Now we invoke ant **
ant 

显然您希望使用命令行参数进行操作。这就是为什么而不是最后一行 ant 使用以下内容:

set my_ant_start=
:setupArgs
if ""%1""=="""" goto doneStart
set my_ant_start=%my_ant_start% %1
shift
goto setupArgs
:doneStart
rem ** Now we invoke ant **
ant %my_ant_start%

【讨论】:

  • 谢谢。正如您在 build.xml 和 bat 文件中看到的那样,我没有指定 JRE 的路径,我没有指定路径。我正在使用 jdk 编译我的源代码,它会自动将 tool.jar 搜索到 jre 中。
  • 实际上我不想在环境变量中设置任何东西,即使是在路径中。有没有其他办法?
  • @AshishPancholi 如果您正确安装 JDK,它会自动修补 PATH 变量。否则 windows 无法找到 .exe.bat 文件的位置。相反,您可以编写自己的my-ant.bat 文件,该文件在第一行设置路径(本地为此.bat),然后启动您的ant 进程
  • 再次感谢。正如您所说-“您可以在第一行设置路径中编写自己的 my-ant.bat 文件(本地为此.bat)”-请建议如何设置这些路径?该bat文件将包含什么?它将在哪里设置路径?
  • 谢谢。当我们运行 my-ant.bat 时,它会设置环境变量的路径,并在关闭 cmd 窗口时再次清除/重置。我不知道这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-02
  • 2023-02-06
  • 2014-01-26
  • 1970-01-01
  • 2022-07-06
  • 1970-01-01
  • 2014-05-27
相关资源
最近更新 更多