小编mar*_*ton的帖子

如何迭代文件中的属性?

我的所有项目及其版本都在一个属性文件中定义,如下所示:

ProjectNameA=0.0.1
ProjectNameB=1.4.2
Run Code Online (Sandbox Code Playgroud)

我想迭代所有项目,并在Ant脚本中使用它们的名称和版本.

目前我使用属性任务读取整个文件,然后在for循环中遍历给定列表,如下所示:

<for list="ProjectNameA,ProjectNameB" param="project">
   <sequential>
    <echo message="@{project} has version ${@{project}}" />
   </sequential>
</for>
Run Code Online (Sandbox Code Playgroud)

如何避免for循环中项目名称的硬编码?基本上迭代每一行,并在我去的时候提取项目的名称和版本.

ant ant-contrib

16
推荐指数
1
解决办法
2万
查看次数

如何在我的Ant构建中修复"Unexpected element"{}目标"{antlib:org.apache.tools.ant} target"错误?

当我运行我的Ant构建时,它失败并出现以下异常:

Unexpected element "{}target" {antlib:org.apache.tools.ant}target
Run Code Online (Sandbox Code Playgroud)

我正在使用Eclipse 3.4.2.

请让我知道我在这里缺少什么.

java ant

16
推荐指数
1
解决办法
2万
查看次数

如果任务失败,如何执行Ant命令?

假设我有一些Ant任务 - 比如说javac或junit - 如果任一任务失败,我想执行一个任务,但如果他们成功,我就不会.

知道怎么做吗?

java ant

13
推荐指数
2
解决办法
1万
查看次数

如何从文件中删除除最后10行之外的所有行?

是否可以通过简单的shell命令仅保留一行的最后10行?

tail -n 10 test.log
Run Code Online (Sandbox Code Playgroud)

提供正确的结果,但我不知道如何修改test.log本身.和

tail -n 10 test.log > test.log
Run Code Online (Sandbox Code Playgroud)

不起作用.

bash sed tail

13
推荐指数
2
解决办法
9246
查看次数

如何解压缩特定文件夹?

如何使用Ant解压缩特定文件夹?

具体来说,我已经下载了apache-tomcat-6.0.29.zip,其中包含文件夹"apache-tomcat-6.0.29".我希望Ant解压缩"apache-tomcat-6.0.29"下的所有内容,但不要在层次结构顶部包含"apache-tomcat-6.0.29".

我尝试了很多东西,但我似乎无法让它发挥作用.

这是我最近的尝试:

<unzip dest="${release.dir}/image/tomcat" src="${tomcat.zip}">
    <patternset>
        <include name="apache-tomcat-6.0.29/*"/>
    </patternset>
</unzip>
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

java ant tomcat unzip

13
推荐指数
1
解决办法
5032
查看次数

Ant:条件复制

如果用户允许,我想覆盖Windows机器上的hosts文件:

<input message="Do you want to overwrite the HOSTS file?"
       addproperty="overwrite.hosts" validargs="yes,no" />

<copy tofile="${env.WINDIR}/system32/drivers/etc/hosts.backup">
    <fileset file="${env.WINDIR}/system32/drivers/etc/hosts" />
</copy>

<copy todir="${env.WINDIR}/system32/drivers/etc">
    <fileset file="${trainer.dir}/hosts" />
</copy>
Run Code Online (Sandbox Code Playgroud)

仅当用户说"是"时,我该如何处理副本?

编辑:

我试过这个:

    <input message="Do you want to overwrite the HOSTS file?" addproperty="overwrite.hosts" validargs="yes,no" />

    <if>
        <equals arg1="${overwrite.hosts}" arg2="yes" />
        <then>
            <copy tofile="${env.windir}/system32/drivers/etc/hosts.backup">
                <fileset file="${env.windir}/system32/drivers/etc/hosts">
                </fileset>
            </copy>

            <copy todir="${env.windir}/system32/drivers/etc">
                <fileset file="${trainer.dir}/hosts">
                </fileset>
            </copy>
        </then>
    </if>
Run Code Online (Sandbox Code Playgroud)

我得到这个输出:

C:\trainer\build.xml:16: Problem: failed to create task or type if
Cause: The name is undefined.
Action: Check the spelling.
Action: …
Run Code Online (Sandbox Code Playgroud)

ant conditional

13
推荐指数
2
解决办法
1万
查看次数

Ant scp任务失败

我有一个要求:将本地文件复制到远程系统.我做了以下事情:

  1. 下载了jsch-0.1.44.jar并复制到Ant的lib文件夹中
  2. 设置路径和每件事

我的构建文件是:

<project name="ImportedBuild" default="all">
  <target name="copyFileToRemote">
    <echo>2222222222 copyFileToRemote Examples:::::::::::::</echo>
    <scp file="sample.txt" todir="${username}:${password}@${hostname}:/shared"/>
  </target>
</project>
Run Code Online (Sandbox Code Playgroud)

当我运行Ant时,我收到此错误:

BUILD FAILED com.jcraft.jsch.JSchException: reject HostKey: 10.184.74.168
    at com.jcraft.jsch.Session.checkHost(Session.java:712)
    at com.jcraft.jsch.Session.connect(Session.java:313)
    at com.jcraft.jsch.Session.connect(Session.java:154)
    at org.apache.tools.ant.taskdefs.optional.ssh.SSHBase.openSession(SSHBase.java:212)
    at org.apache.tools.ant.taskdefs.optional.ssh.Scp.upload(Scp.java:291)
    at org.apache.tools.ant.taskdefs.optional.ssh.Scp.execute(Scp.java:203)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
    ... etc ...
Run Code Online (Sandbox Code Playgroud)

任何想法如何解决这个问题?

ant scp

13
推荐指数
1
解决办法
2万
查看次数

从文件中删除包含关键字的行

我想删除包含特定关键字的文本文件中的所有行.

到目前为止我只发现:

<linecontains>
    <contains value="assert"/>
</linecontains>
Run Code Online (Sandbox Code Playgroud)

但我不知道如何删除这些行.

ant

13
推荐指数
1
解决办法
9554
查看次数

如何使用Ant重命名文件夹?

我想用时间戳重命名我的应用程序文件夹,然后使用相同的文件夹名称解压缩我的应用程序的较新版本.使用Ant (move任务),看起来您可以将内容从一个文件夹移动到另一个文件夹.

这是我在Ant中做到这一点的唯一方法吗?

ant

12
推荐指数
3
解决办法
2万
查看次数

如何在项目之间最好地共享Ant目标?

有没有一种完善的方式在项目之间共享Ant目标?我目前有一个解决方案,但它有点不优雅.这是我到目前为止所做的.

ivy-tasks.xml的网络服务器上有一个名为托管的文件.此文件包含用于管理与Ivy的项目依赖关系的样板任务.例如:

<project name="ant-ivy-tasks" default="init-ivy"
         xmlns:ivy="antlib:org.apache.ivy.ant">
  ...
  <target name="ivy-download" unless="skip.ivy.download">
    <mkdir dir="${ivy.jar.dir}"/>
    <echo message="Installing ivy..."/>
    <get src="http://repo1.maven.org/maven2/org/apache/ivy/ivy/${ivy.install.version}/ivy-${ivy.install.version}.jar"
         dest="${ivy.jar.file}" usetimestamp="true"/>
  </target>

  <target name="ivy-init" depends="ivy-download"
          description="-> Defines ivy tasks and loads global settings">
    <path id="ivy.lib.path">
      <fileset dir="${ivy.jar.dir}" includes="*.jar"/>
    </path>
    <taskdef resource="org/apache/ivy/ant/antlib.xml"
             uri="antlib:org.apache.ivy.ant"
             classpathref="ivy.lib.path"/>
    <ivy:settings url="http://myserver/ivy/settings/ivysettings-user.xml"/>
  </target>
  ...
</project>
Run Code Online (Sandbox Code Playgroud)

这个文件被托管的原因是因为我希望:

  • 将文件检入每个需要它的项目 - 这将导致重复,从而使维护目标更加困难.
  • 让我的build.xml依赖于从源代码控制中检出项目 - 这将使构建在顶层有更多的XML来访问该文件.

我在项目的build.xmls中对此文件的处理方式如下:

<property name="download.dir" location="download"/>
<mkdir dir="${download.dir}"/>
<echo message="Downloading import files to ${download.dir}"/>

<get src="http://myserver/ivy/ivy-tasks.xml" dest="${download.dir}/ivy-tasks.xml" usetimestamp="true"/>
<import file="${download.dir}/ivy-tasks.xml"/>
Run Code Online (Sandbox Code Playgroud)

关于这一点的"脏"部分是我必须在 …

ant build-process build ivy dependency-management

12
推荐指数
1
解决办法
3257
查看次数