我正在寻找一种非常直接的方法来从命令行获取安装在机器上的TCL版本.对于大多数编程语言来说,都是如此
languagename -v
Run Code Online (Sandbox Code Playgroud)
提供我想要的信息.这似乎不是一个选择tclsh.
echo 'puts $tcl_version;exit 0' | tclsh
Run Code Online (Sandbox Code Playgroud)
但我想知道是否还有更直接和跨平台的东西?(我怀疑这会在微软操作系统上失败.)
-
编辑:只是为了强调我正在寻找可以直接从操作系统命令行执行的东西.一旦你开始有各种各样的信息tclsh,但我正试图避免这种情况来简化自动发现.
我正在研究使用 Gradle 替换现有 Ant 构建(用于 Java EE 应用程序)的概念证明,该构建开始很简单,但随着时间的推移变得越来越复杂。(Ant 构建是通用的,由在构建开始时导入的两个文件中的适当属性和路径控制。这是一个好主意,但现在变得有点不稳定。)
我现在有很多部分被 Gradle 替换,并且进展顺利,直到我遇到了对其中一个定义路径的需求。路径在 Ant 文件中非常有用,因为它们让您只需定义一次依赖项并在需要它们的任何地方引用它们。
我的搜索引擎 foo 今天一定很弱,但我很难找到任何解释如何在 Gradle 中定义一些像路径一样的东西并且我可以传递的地方。
具体来说,如何用 Gradle 将使用的内容替换 Javac Ant 任务中的以下路径和对该路径的引用?
一、路径:
<path id="base.path">
<pathelement location="ApacheCommons/commons-lang/commons-lang.jar" />
<pathelement location="log4j/log4j.jar" />
<pathelement location="Acme/acme.jar" />
<fileset dir="." erroronmissingdir="false">
<include name="**/*.jar"/>
</fileset>
<fileset dir="../../${project.name}Model" erroronmissingdir="false">
<include name="**/${project.name}Model.jar"/>
</fileset>
<fileset dir="../../${project.name}Persistance" erroronmissingdir="false">
<include name="**/${project.name}Persistance.jar"/>
</fileset>
<fileset dir="../../${project.name}Service" erroronmissingdir="false">
<include name="**/${project.name}Service.jar"/>
</fileset>
<path refid="server.path" />
</path>
Run Code Online (Sandbox Code Playgroud)
现在我获取路径并将其放入 Groovy 变量中:
def basePath = ant.properties['base.path']
Run Code Online (Sandbox Code Playgroud)
然后在 Javac 任务中使用它:
ant.javac(srcDir: "${compileSourcecode}", destDir: "WebContent/WEB-INF/classes", source: …Run Code Online (Sandbox Code Playgroud)