是否可以从Java代码调用Ant或NSIS脚本?

Aer*_*row 7 java ant nsis

是否可以在运行时从Java代码以编程方式调用Ant或NSIS脚本?如果是这样,怎么样?

Niv*_*vas 15

可以从Java代码调用ant脚本.

请参阅此文章(向下滚动到"通过Java运行Ant"部分)和本文:

   File buildFile = new File("build.xml");
   Project p = new Project();
   p.setUserProperty("ant.file", buildFile.getAbsolutePath());
   p.init();
   ProjectHelper helper = ProjectHelper.getProjectHelper();
   p.addReference("ant.projectHelper", helper);
   helper.parse(p, buildFile);
   p.executeTarget(p.getDefaultTarget());
Run Code Online (Sandbox Code Playgroud)

更新

我尝试使用以下ant文件,它没有"告诉"任何东西(没有控制台输出),但是它起作用了:文件确实被移动了

   <project name="testproject" default="test" basedir=".">
      <target name="test">
        <move file="test.txt" tofile="test2.txt" />
      </target>
   </project>
Run Code Online (Sandbox Code Playgroud)

当我再次尝试时(当没有test.txt移动时(已经移动)),我得到了一个java.io.FileNotFoundException.

我认为这是你从Java运行时所期望的.

如果您想要ant任务的控制台输出,您可能希望将Logger添加为构建侦听器.

来自@ Perception的答案如下.

   DefaultLogger consoleLogger = new DefaultLogger();
   consoleLogger.setErrorPrintStream(System.err);
   consoleLogger.setOutputPrintStream(System.out);
   consoleLogger.setMessageOutputLevel(Project.MSG_INFO);
   p.addBuildListener(consoleLogger);
Run Code Online (Sandbox Code Playgroud)

  • @BEN Ten,你能用"不工作"来解释你的意思吗? (2认同)