如何在 beanshell 中捕获异常?
How to catch exception in a beanshell?
我可以使用 evaluateBeanshell 规则来强制执行一些约定:src 下的目录中没有冒号。
<plugin>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.4.1</version>
<executions>
<execution>
<id>enforce-beanshell</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<evaluateBeanshell>
<condition>org.codehaus.plexus.util.FileUtils.getDirectoryNames(new File("src"), "**/*:*", null, false).isEmpty()</condition>
</evaluateBeanshell>
</rules>
</configuration>
</execution>
</executions>
</plugin>
但是有些项目没有src目录,规则会失败。我试过设置
<condition>org.codehaus.plexus.util.FileUtils.getDirectoryNames(new File("."), "src/**/[^A-Z]*", null, false).isEmpty()</condition>
如何安全地捕捉到 src 目录不存在?
如果你想使用 Beanshell,你只需要 returns 布尔值。
<evaluateBeanshell>
<condition>new java.io.File("src").exists()</condition>
</evaluateBeanshell>
如果路径以 file/folder/symlink 形式存在,则为真,否则为假,这将破坏构建。
如果要检查多个方面,比如是否存在,如果是目录,添加多个条件:
<evaluateBeanshell>
<condition>new java.io.File("path").exists()</condition>
<condition>new java.io.File("path").isDirectory()</condition>
</evaluateBeanshell>
(可以说检查它是否存在然后检查它是否是一个目录没有什么意义,但有助于说明这一点)
如果您必须使用 Beanshell,还有很多事情可以做。但最终,'requireFilesExist' 规则可能是执行者的更好配置。
这正是我需要的
<evaluateBeanshell>
<condition>
String projectSource = "${project.basedir}" + "/src";
if (org.codehaus.plexus.util.FileUtils.fileExists(projectSource)){
List filenames = org.codehaus.plexus.util.FileUtils.getFileNames(
new File(projectSource),"**/*.*",null,false);
for (Iterator it = filenames.iterator(); it.hasNext();) {
String file = it.next();
String extension = org.codehaus.plexus.util.FileUtils.getExtension(file);
if (extension.equals(extension.toLowerCase())) {
it.remove();
} else {
print("Invalid filename extension (no capitals): " + projectSource + "/" + file);
};
};
return filenames.isEmpty();
} else return true;
</condition>
</evaluateBeanshell>
我可以使用 evaluateBeanshell 规则来强制执行一些约定:src 下的目录中没有冒号。
<plugin>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.4.1</version>
<executions>
<execution>
<id>enforce-beanshell</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<evaluateBeanshell>
<condition>org.codehaus.plexus.util.FileUtils.getDirectoryNames(new File("src"), "**/*:*", null, false).isEmpty()</condition>
</evaluateBeanshell>
</rules>
</configuration>
</execution>
</executions>
</plugin>
但是有些项目没有src目录,规则会失败。我试过设置
<condition>org.codehaus.plexus.util.FileUtils.getDirectoryNames(new File("."), "src/**/[^A-Z]*", null, false).isEmpty()</condition>
如何安全地捕捉到 src 目录不存在?
如果你想使用 Beanshell,你只需要 returns 布尔值。
<evaluateBeanshell>
<condition>new java.io.File("src").exists()</condition>
</evaluateBeanshell>
如果路径以 file/folder/symlink 形式存在,则为真,否则为假,这将破坏构建。
如果要检查多个方面,比如是否存在,如果是目录,添加多个条件:
<evaluateBeanshell>
<condition>new java.io.File("path").exists()</condition>
<condition>new java.io.File("path").isDirectory()</condition>
</evaluateBeanshell>
(可以说检查它是否存在然后检查它是否是一个目录没有什么意义,但有助于说明这一点)
如果您必须使用 Beanshell,还有很多事情可以做。但最终,'requireFilesExist' 规则可能是执行者的更好配置。
这正是我需要的
<evaluateBeanshell>
<condition>
String projectSource = "${project.basedir}" + "/src";
if (org.codehaus.plexus.util.FileUtils.fileExists(projectSource)){
List filenames = org.codehaus.plexus.util.FileUtils.getFileNames(
new File(projectSource),"**/*.*",null,false);
for (Iterator it = filenames.iterator(); it.hasNext();) {
String file = it.next();
String extension = org.codehaus.plexus.util.FileUtils.getExtension(file);
if (extension.equals(extension.toLowerCase())) {
it.remove();
} else {
print("Invalid filename extension (no capitals): " + projectSource + "/" + file);
};
};
return filenames.isEmpty();
} else return true;
</condition>
</evaluateBeanshell>