gpt4 book ai didi

java - Ant 脚本排除除某些文件之外的文件夹

转载 作者:太空宇宙 更新时间:2023-11-04 08:08:34 25 4
gpt4 key购买 nike

我想写Ant排除除某些文件之外的整个文件夹的脚本。

我有一个文件夹,其中有数千个 Java 文件。现在我想排除该文件夹,并希望包含其中的两个 Java 文件。我怎样才能做到这一点?

下面的代码对我不起作用。

<target  name="compile" >
<javac srcdir="src" destdir="./classes"
<exclude name="com/corporate/modes/**"/>
<include name="com/corporate/modes/UpdatePersonalDetail.java"/>

最佳答案

仅包含 javac 中文件夹中的特定文件编译任务,使用 <include> 指定文件元素。当 <include>如果指定了 element,则只有指定的文件(及其项目依赖项)才会包含在编译中。

示例项目

项目目录:/home/project
源目录:/home/project/src
构建目录:/home/project/build

<小时/>

build.xml(位于/home/project)

<?xml version="1.0" encoding="UTF-8"?>
<project name="compile_test" basedir="." default="compile_class1">

<property name="src.dir" value="${basedir}/src" />
<property name="build.dir" location="${basedir}/build" />
<property name="classes.dir" location="${build.dir}/classes" />

<target name="init" description="Initialize the build directory.">
<mkdir dir="${build.dir}" />
<mkdir dir="${classes.dir}" />
</target>

<target name="clean" description="Delete all files created by this script.">
<delete dir="${build.dir}" />
</target>

<target name="compile_class1" depends="init">
<javac srcdir="${src.dir}" destdir="${classes.dir}"
includeantruntime="false">
<include name="com/mypackage/Class1.java" />
</javac>
</target>

<target name="compile_class2" depends="init">
<javac srcdir="${src.dir}" destdir="${classes.dir}"
includeantruntime="false">
<include name="com/mypackage/Class2.java" />
</javac>
</target>
</project>
<小时/>

Java 源文件

Class1.java

package com.mypackage;

public class Class1 {
public static void main(String[] args){
System.out.println("Class1");
}
}

Class2.java

package com.mypackage;

public class Class2 {
public static void main(String[] args){
Class3 class3 = new Class3();
System.out.println(class3.getMessage());
}
}

Class3.java

package com.mypackage;

public class Class3 {
public String getMessage() {
return "The answer is 42.";
}
}
<小时/>

Ant 输出

Ant objective-c ompile_class1

$ ant clean compile_class1

Buildfile: /home/project/build.xml

clean:
[delete] Deleting directory /home/project/build

init:
[mkdir] Created dir: /home/project/build
[mkdir] Created dir: /home/project/build/classes

compile_class1:
[javac] Compiling 1 source file to /home/project/build/classes

BUILD SUCCESSFUL
Total time: 1 second

请注意,虽然有三个 Java 源文件,但只有 <include> 指定的文件。元素已编译。

<小时/>

Ant objective-c ompile_class2

$ ant clean compile_class2

Buildfile: /home/project/build.xml

clean:
[delete] Deleting directory /home/project/build

init:
[mkdir] Created dir: /home/project/build
[mkdir] Created dir: /home/project/build/classes

compile_class2:
[javac] Compiling 1 source file to /home/project/build/classes

BUILD SUCCESSFUL
Total time: 1 second

在这种情况下,虽然 Ant 目标 compile_class2仅在嵌套 <include> 中指定了一个文件元素,Class2.java 和 Class3.java 都被编译,因为 Class2.java 依赖于 Class3.java。如果编译时未包含 Class2.java 的依赖项,则在尝试执行 Class2 时,您将收到错误消息:无法找到 com.mypackage.Class3。

关于java - Ant 脚本排除除某些文件之外的文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11650838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com