将jar中src / main / resources中的目录压缩到外部位置

时间:2018-04-12 06:58:42

标签: java maven java-8 classloader executable-jar

我正在编写一个java应用程序,它包含应用程序的src / main / resources(maven项目)中的文件夹(带有子文件夹)。我想从src / main / resources压缩文件夹,并将其放在执行此jar文件的机器上的本地路径上。

我可以使用eclipse中的getClassLoader()。getResource()。getPath()以递归方式读取/ src / main / resources中的文件。但是,当从jar执行相同的代码时,我得到FileNotFoundException。

我尝试使用getClassLoader()。getResourceAsStream(),如stackoverflow中的其他类似问题所示。但是我无法检索子文件夹的File对象以将它们添加为ZipEntry。

这是我的pom的快照。

        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>abc.def.ghi</mainClass>
                    </manifest>
                    <manifestEntries>
                      <Class-Path>.</Class-Path>
                    </manifestEntries>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
            <executions>
              <execution>
                <id>make-assembly</id>
                <phase>package</phase>
                <goals>
                  <goal>single</goal>
                </goals>
              </execution>
            </executions>
        </plugin>

如何在src / main / resources中检索File对象(以递归遍历和查找文件列表),以便我可以使用getResourceAsStream()读取单个文件并将其写入外部文件夹然后压缩所有文件他们从哪里来?

还有其他方法可以解决我的问题吗?

0 个答案:

没有答案