我正在运行一个Ant任务,使用maven-antrun-plugin在maven中运行junit测试.调用如下所示:
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>ant-test</id>
<phase>test</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks unless="maven.test.skip">
<ant antfile="${basedir}/build.xml" target="test">
<property name="build.compiler" value="extJavac" />
</ant>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
当测试失败时,构建继续并报告成功.我尝试仅使用ant重现此行为(从命令行'ant -f example.xml'运行Ant):
<project name="example" basedir="." default="aa">
<target name="aa">
<ant antfile="build.xml" target="test" />
</target>
</project>
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,一切都如预期:第一次测试失败停止构建并报告它不成功.它看起来像maven做了一些魔术(或以另一种方式调用蚂蚁).
所以我的问题是如何在解决测试任务失败时如何实现失败的maven构建的效果.
我找不到有关如何使用ant任务转储MySQL数据库的任何信息.
我是否必须创建自己的任务才能执行此操作?
ANT script ===generate==> myDataBase.sql
Run Code Online (Sandbox Code Playgroud) 我在Ant下使用Junit来执行Selenium Test.My测试用例需要读取包含测试数据的文件(为了完成数据驱动测试).我不介意在测试用例中嵌入文件名,但是我想在build.xml文件中参数化存储数据文件的目录的名称.
从build.xml传递信息到测试用例的最佳方法是什么?使用ant属性是个好主意吗?是否可以从build.xml注入Junit4参数?
我需要从Ant构建脚本中增加源文件中的数字.我可以使用该ReplaceRegExp任务来查找我想要增加的数字,但是如何在replace属性中增加该数字呢?
这是我到目前为止所得到的:
<replaceregexp file="${basedir}/src/path/to/MyFile.java"
match="MY_PROPERTY = ([0-9]{1,});"
replace="MY_PROPERTY = \1;"/>
Run Code Online (Sandbox Code Playgroud)
在replace属性中,我该怎么做
replace="MY_PROPERTY = (\1 + 1);"
Run Code Online (Sandbox Code Playgroud)
我无法使用该buildnumber任务将值存储在文件中,因为我已经在同一个构建目标中使用它.是否有另一个蚂蚁任务可以让我增加一个属性?
假设我在src/tree中有我的源代码(可能在我的测试/树中).说我想只编译那棵树的一部分.我可能想要这样做的原因是多种多样的.作为一个例子,我可能想要创建尽可能小的jar(不包括某些类),或者我可能想要编译的最快的编译时间.我绝对想编译所有的依赖项!
这可以通过以下命令行轻松实现:
javac -d build/ -cp whatever -sourcepath src src/path/to/MyClass.java
Run Code Online (Sandbox Code Playgroud)
现在,你怎么能用蚂蚁做到这一点?javac ant 任务编译所有内容:
将递归扫描源和目标目录以查找要编译的Java源文件.
可以使用excludes和includes参数,但它们是有问题的.事实上,它似乎是一个有明确设置所有的includes(不是自动的依赖查找),并且即使最差的是排除优先于包括:
当使用包含和排除时,仅使用与至少一个包含模式匹配且与任何排除模式不匹配的文件/目录.
因此,你不能使用
<javac srcdir="${src.dir}" destdir="${build.dir}" classpathref="classpath"
excludes="**/*.java" includes="src/path/to/MyClass.java" />
Run Code Online (Sandbox Code Playgroud)
因为它不会编译任何东西:-(
有没有办法javac用ant 实现这个简单的命令行?
编辑:谢谢你的回答,萨迪,我接受了,因为它确实以我在这个问题中想知道的方式工作.但是我有几条评论(在你的答案的评论栏中太长了):
1)我确实阅读了文档(参见上面的链接),但目前还不清楚只是includes你实际上也排除了其他一切
2)当你只是includes蚂蚁记录类似的东西
[javac] Compiling 1 source file to /my/path/to/build
Run Code Online (Sandbox Code Playgroud)
即使依赖项使其编译(多)只是一个源文件.
如果我有这样的文件集:
<fileset dir=".">
<exclude name="classes/*"/>
<include name="**/zar.class"/>
</fileset>
Run Code Online (Sandbox Code Playgroud)
排除优先于include,我不会以任何类结束.[因为对于这个假设的例子,zar.class在类dir中]我想包含zar文件,即使它在类dir中.
我暂时对抗这个问题,阅读有关选择器,模式集,文件集,尝试组合文件集等但无法使其正常工作.
有人知道怎么做吗?
我是bash shell编程的初学者.你能告诉我bash shell中的'$$'符号吗?
如果我尝试以下
#> echo $$
Run Code Online (Sandbox Code Playgroud)
它打印
#>18756
Run Code Online (Sandbox Code Playgroud)
你能告诉我这个符号的用途和时间吗?
我有一些方法将一些数据写入文件.我使用PrintWriter,BufferedWriter并且FileWriter如下所示
public void writeToFile(String FileName){
PrintWriter pw = null;
try {
pw = new PrintWriter(new BufferedWriter(new FileWriter(FileName)));
for(Cars car : list){
pw.println(car.getType());
pw.println(car.getMaxSpeed());
pw.println(car.getOwner());
pw.println();
pw.flush();
}
pw.close();
}
catch(IOException ex){
System.err.println(ex);
}
}
Run Code Online (Sandbox Code Playgroud)
现在我如何从文件中读取这些数据?我试图用InputStreamReader,BufferedReader和FileInputStream,但我的NetBeans显示我的错误信息
public void readFromFile() throws IOException {
InputStreamReader fr = null;
try {
fr = new InputStreamReader(new BufferedReader(new FileInputStream(new FileReader("c:\\cars.txt"))));
System.out.println(fr.read());
} catch (Exception ex) {
System.out.println(ex.getMessage());
} finally {
fr.close();
}
}
Run Code Online (Sandbox Code Playgroud)
这种方法有什么问题?
我正在使用Ant脚本通过以下方式获取目录的内容:
<ac:foreach target="process-test" param="the_file" delimiter=",">
<path>
<fileset dir="${test.suite.url}">
<include name="**/*.html"/>
<exclude name="**/cases/"/>
</fileset>
</path>
</ac:foreach>
Run Code Online (Sandbox Code Playgroud)
这是返回文件的完整路径(这也是我需要的东西)但是,是否可以剥离路径并给我一个文件名?