2016-10-28 4 views
-1

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> 

일반적으로 대상 폴더가 생성하지 않습니다 resources 폴더. 다른 사람들이 겪은 버그. 나는 이것이 대상 폴더에 리소스 폴더를 수동으로 만듦으로써 해결 될 수 있다고 생각하지만 그다지 유용하지는 않습니다. 하지만 이렇게해도 나는 자원을 사용할 수 있도록하지 않는 것 :

내 코드 :

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); 

           } 

       } 

}

나는 또한 함께 FindNReplaceDictionary.txt을 시도했습니다는 "선도/"하지만 기쁨은 없습니다.

내 혼란을 다루려면 여기 내 질문이 있습니다 1. Java 프로젝트로 실행할 수 있도록 이클립스에서 리소스를 어떻게 참조해야합니까? 2. Maven 프로젝트를 한 번 참조하려면 어떻게해야합니까? 새로 설치를 완료했습니다 3. Java 프로젝트로 실행하고 Maven 빌드를 실행하는 사이에 아무 것도 변경해야합니까?

예 모든 것을 혼동합니다.

+0

없음 자원 폴더를 작성해야하며, 자원 폴더에있는 것이 클래스 경로의 루트가 될 위치에 복사됩니다. 로컬 클라이언트 응용 프로그램의 jar 루트, 웹 응용 프로그램의 WEB-INF/classes. – Gimby

답변

1

"resources"폴더의 아티팩트가 최종 패키지/컴파일 된 클래스 경로에 복사됩니다. 웹 응용 프로그램의 경우 'WEB-INF/classes'다른 인스턴스가 'classes'폴더로 이동합니다. 다른 자원 폴더를 원하는 경우 받는다는 표준 자기 의견을 고집하는 폴더 구조를 가지고 있기 때문에

당신은 빌드에서

<build>  
     <resources> 
      <resource> 
       <directory>src/main/resources</directory> 
      </resource> 
      <resource> 
       <directory>src/main/anotherresourcesfolder</directory> 
      </resource> 
     </resources> 
    </build> 

가 쉽게 프로젝트를 이클립스를 받는다는 프로젝트를 변경할 수 없습니다 지정할 수 있습니다

관련 문제