我遇到以下情况。
我有一个java程序包装在一个jar文件中。如果我打电话java -jar myProgramm.jar
一切正常。该文件正在从 build.xml (ant文件)中读取一些值。此文件位于myProgramm.jar所在的目录中。
在我们公司,我们将所有内容都包装在shell脚本中,以便有一种无法调用脚本的方式。
所以我的shell脚本myProgrammWrapper.sh看起来像这样:
#!bin/bash
java -jar $(cygpath -w ~/path/to/tools/myProgramm.jar) "$@"
cygpath命令在那里,因为sh在cygwin中执行,否则将找不到路径。 “$ @”将参数传递给程序。
以下是问题:
我们的cygwin环境设置方式可以从每个目录调用myProgrammWrapper.sh。但是当我从任何随机位置调用它时,都找不到build.xml。
有没有办法在shell脚本中引用 build.xml 。它位于~/path/to/tools/
?
首先,我考虑将构建文件复制到当前目录,然后将其删除。这工作正常,但有一个基本缺陷。我们正在使用ant工作并拥有build.xml文件。因此,如果有人在已有build.xml文件的目录中执行myProgrammWrapper.sh。它会被覆盖。
也许这个问题可以从Java方面解决。任何想法和意见都表示赞赏。
答案 0 :(得分:1)
为什么不让Bash脚本将工作目录更改为包含XML文件的位置?
尝试:
(cd $(cygpath -w ~/path/to/tools/) && java -jar $(cygpath -w ~/path/to/tools/myProgramm.jar) "$@")