如何从Maven项目获取资源

时间:2016-10-28 12:08:18

标签: java maven

Maven 非常 很难。我想在我的代码中引用资源。但我不能。

我在Eclipse中设置了一个项目。在其中我有以下结构

src
---main
--------java
------------myclasses
-------resources
------------sometextfiles.txt

pom.xml的相关部分如下:

<build>
        <finalName>MyProject</finalName>
        <plugins>

          <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <configuration>
    <filters>
         <filter>
            <artifact>*:*</artifact>
               <excludes>
                  <exclude>META-INF/*.SF</exclude>
                  <exclude>META-INF/*.DSA</exclude>
                  <exclude>META-INF/*.RSA</exclude>
               </excludes>
            </filter>
         </filters>
        <transformers>
            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                <mainClass>main.java.Console.TBB_SQLBuilder</mainClass>
            </transformer>
        </transformers>
    </configuration>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
        </execution>
    </executions>
</plugin>


        </plugins>
    </build>

当我从Eclipse构建干净安装时,目标文件夹通常不会生成资源文件夹。其他人遭受的一个错误。我认为这可以通过在目标文件夹中手动创建资源文件夹来解决,但这不是很有用。但即使我这样做,我似乎也无法使用这些资源:

我的代码:

public class Checkers {
     ArrayList<String> che2=new ArrayList<String>();
     static URL dictionary;
     String n=null;

    public Checkers() {

    }

    public static String FindNReplace(String n) throws IOException, URISyntaxException{
        BufferedReader reader = new BufferedReader(new InputStreamReader(ClassLoader.class.getResourceAsStream("FindNReplaceDictionary.txt")),2048);

String [] split=null;
        ArrayList<String> orig= new ArrayList<String>();
        String [] orig_arr=null;
        ArrayList<String> newDoc= new ArrayList<String>();
        String [] newDoc_arr=null;      

            StringBuilder sb = new StringBuilder();
            String line = reader.readLine();

            while (line != null) {
                split=line.split(":");
                System.out.println("SPLIT"+split);

                                 }

               }

}

我还尝试使用前导&#34; /&#34; FindNReplaceDictionary.txt;但没有快乐。

所以在这里处理我的困惑是我的问题 1.如何在Eclipse中引用资源,以便至少可以将其作为java项目运行 2.一旦Maven项目经历了构建清理安装,我如何引用资源 3.在作为Java项目运行和执行Maven构建之间是否需要更改任何内容

是的我对整件事感到困惑。

1 个答案:

答案 0 :(得分:1)

&#34;资源中的文物&#34;文件夹被复制到最终打包/编译的类路径。在Web应用程序的情况下,它将是“WEB-INF / classes&#39;其他情况下,它将进入&#39;类&#39;夹。

如果您想要另一个资源文件夹,可以在构建

中指定
<build>     
        <resources>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
            <resource>
                <directory>src/main/anotherresourcesfolder</directory>
            </resource>
        </resources>
    </build>

你将无法轻易地将maven项目更改为eclipse项目,因为maven具有标准的自定义文件夹结构