Java 如何使用Maven在目标文件夹中创建新目录
我正在编写一个库,它将根据测试结果创建一个报告(想象一下像Surefire这样的东西)。我的问题是,我能够在Java 如何使用Maven在目标文件夹中创建新目录,java,maven,dependencies,Java,Maven,Dependencies,我正在编写一个库,它将根据测试结果创建一个报告(想象一下像Surefire这样的东西)。我的问题是,我能够在target/目录中创建一个文件夹来保存报告,并复制必要的文件,但我只能在构建库项目本身时这样做 我希望实现与Surefire插件相同的行为,这意味着如果我将库的依赖关系放在某个项目上,比如说myProject,那么在构建之后,我将获得类似myProject/target/myLibrary的内容 顺便说一句,这就是我现在拥有的 <plugin> <groupI
target/
目录中创建一个文件夹来保存报告,并复制必要的文件,但我只能在构建库项目本身时这样做
我希望实现与Surefire插件相同的行为,这意味着如果我将库的依赖关系放在某个项目上,比如说myProject
,那么在构建之后,我将获得类似myProject/target/myLibrary
的内容
顺便说一句,这就是我现在拥有的
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<phase>generate-test-sources</phase>
<configuration>
<tasks>
<echo message="Creating folder for the lib..." />
<mkdir dir="${report.folder}" />
<echo message="Copying Twitter Bootstrap libraries to the ${report.folder}" />
<copy todir="${report.folder}">
<fileset dir="src/main/resources/bootstrap">
<include name="**/**" />
</fileset>
</copy>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
org.apache.maven.plugins
maven antrun插件
1.7
生成测试源
跑
还有一个额外的问题,是否有
src/main/resources
的变量?在您的库中,只需检查目标
目录(和/或您感兴趣的任何子目录)是否存在。如果它不只是使用File.mkdirs(…)
并创建它。这就是maven surefire插件所做的。好的,所以我找到了使用getResourceAsStream()
方法的解决方案
String classpathName = "/bootstrap/" + "css" + "/" + file;
InputStream inputStream = SetupReportDirectory.class.getResourceAsStream(classpathName);
String path = "target/myLibrary/bootstrap";
FileOutputStream outputStream = new FileOutputStream(path);
IOUtils.copy(inputStream, outputStream);
你看过的代码了吗?我看过了,但是我没有发现任何有用的东西。我认为术语“库”在这里很混乱,因为你不能执行库,但它被某些东西使用了。您希望如何执行这段代码?作为可执行jar?您现在如何运行它?它将是Arquillian测试框架的扩展。SPI与CDI类似,因此代码是通过侦听来自该SPI的事件来执行的。因此,在容器启动时触发了一个事件,我希望在此事件期间复制这些文件。因此,如果您将依赖项包含到我的扩展名中并运行测试,代码将自动执行,这是可行的,但我还需要在那里复制文件。如果我做了
FileUtils.copyDirectoryToDirectory(新文件(“src/main/resources/bootstrap”)、新文件(“target/myLibrary”)
然后我将获得FileNotFoundException
-使用libraryWell的项目中不存在bootstrap。显然,您首先必须检查目标目录是否存在,如果不存在,则创建它。然后您可以使用FileUtils
类中的相应方法执行复制uld可以这样做。是的,但是这个目录确实存在,因为我在这个目录之前执行了newfile(“target/myLibrary”).mkdir();
命令。所以我想问题是src/main/resources/bootstrap
现在不在类路径上。