Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Maven在目标文件夹中创建新目录_Java_Maven_Dependencies - Fatal编程技术网

Java 如何使用Maven在目标文件夹中创建新目录

Java 如何使用Maven在目标文件夹中创建新目录,java,maven,dependencies,Java,Maven,Dependencies,我正在编写一个库,它将根据测试结果创建一个报告(想象一下像Surefire这样的东西)。我的问题是,我能够在target/目录中创建一个文件夹来保存报告,并复制必要的文件,但我只能在构建库项目本身时这样做 我希望实现与Surefire插件相同的行为,这意味着如果我将库的依赖关系放在某个项目上,比如说myProject,那么在构建之后,我将获得类似myProject/target/myLibrary的内容 顺便说一句,这就是我现在拥有的 <plugin> <groupI

我正在编写一个库,它将根据测试结果创建一个报告(想象一下像Surefire这样的东西)。我的问题是,我能够在
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
现在不在类路径上。