2013-05-04 12 views
18

Mam nieco inną wersję the question, którą zrobiłem niedawno. Mam Maven projekt pod Netbeans 7.3, która nie ma żadnego pliku build.xml aby skonfigurować opcje budynku, a tam jest pom.xml że mogę używać do importowania innych bibliotek. Teraz mam plik tekstowy (powiedzmy textfile.txt) przechowywany w folderze projektu w Netbeans 7.3, np.Przeniesienie pliku tekstowego do folderu docelowego podczas kompilowania projektu Maven

project folder 
    textfile.txt 
    src 
    package 
    package.subpackage 
     MyClass.java 

Kiedy kompilacji dostaję target folder, w którym słoik plik jest umieszczony w, na przykład

project folder 
    textfile.txt 
    target 
    classes 
    generated-sources 
    ....etc 
    test-classes 
    MyProject.jar 
    src 
    package 
    package.subpackage 
     MyClass.java 

Jak mogę skopiować plik textfile.txt do folderu docelowego podczas kompilowania projektu Maven?

Odpowiedz

28

Pierwszym sposobem jest umieszczenie plików w src/main/resources, który jest folderem przeznaczonym do przechowywania odpowiednich zasobów, tj. Zasobów zawartych w pliku jar (np. Obrazy dla ikon).

Jeśli chcesz, aby plik konfiguracyjny był dystrybuowany ze słojem, ale oddzielony przez niego, musisz edytować plik pom.xml. Możliwą odpowiedzią jest dodanie następującej wtyczki między znacznikami <plugins> i </plugins>.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <version>1.8</version> 
    <executions> 
     <execution> 
      <phase>test</phase> 
      <goals> 
       <goal>run</goal> 
      </goals> 
      <configuration> 
       <tasks> 
        <echo>Using env.test.properties</echo> 
        <copy file="textfile.txt" tofile="${basedir}/target/textfile.txt"/> 
        </tasks> 
       </configuration> 
      </execution> 
     </executions> 
    </plugin> 

Ponadto, jak można przeczytać here można również importować wszystkie zasoby z katalogu „Input” do katalogu „wyjściowego” wewnątrz tarczy za pomocą specjalnej wtyczki, np:

<plugin> 
    <artifactId>maven-resources-plugin</artifactId> 
    <version>3.0.1</version> 
    <executions> 
     <execution> 
      <id>copy-resources</id> 
      <!-- here the phase you need --> 
      <phase>validate</phase> 
      <goals> 
       <goal>copy-resources</goal> 
      </goals> 
      <configuration> 
       <outputDirectory>${basedir}/target/output</outputDirectory> 
       <resources>   
        <resource> 
         <directory>input</directory> 
         <filtering>true</filtering> 
        </resource> 
       </resources>    
      </configuration>    
     </execution> 
    </executions> 
</plugin> 
+0

Dziękuję Ci! Nie jestem pewien, czy pierwsza wtyczka jest używana poprawnie, ale działa dobrze. –

+0

Niesamowite, to bardzo pomaga, dziękuję JeanValjean! –

11

Najprostszym sposobem, aby korzystać z niektórych zasobów, co wiem (dodatkowe informacje o konfiguracji zasobów można znaleźć tutaj: https://maven.apache.org/plugins/maven-resources-plugin/):

<build> 
    <plugins> 
    <!-- your plugins, including or not maven-resource-plugin --> 
    </plugins> 
    <resources> 
    <resource> 
     <filtering>true</filtering><!-- if it is neccessary --> 
     <directory>${project.basedir}</directory><!-- from --> 
     <targetPath>${project.build.directory}</targetPath><!-- to --> 
     <includes><!-- what --> 
     <include>textfile.txt</include> 
     </includes> 
    </resource> 
    </resources> 
</build> 
+0

Jak upewnić się, że plik textfile.txt jest również kopiowany do pliku jar? – Sam

+0

Mam to. Dziękuję Ci. – Sam

4

mieć Absol ute kontroli wyjścia twojej kompilacji możesz użyć "Apache Maven Assembly Plugin". Możesz zdefiniować prawie wszystko (format, podfoldery ...).

Zgromadzenie Plugin Maven jest przeznaczony przede wszystkim, aby umożliwić użytkownikom agregować wyjście projektu wraz z jego zależnościami, modułów dokumentacji miejscu oraz innych plików w jednym podziałowi archiwum.

More info

Musisz zainstalować wtyczkę w pliku pom:

<plugins> 
    <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <configuration> 
      <descriptors> 
       <descriptor>src/main/assembly/yourassembly.xml</descriptor> 
      </descriptors> 
     </configuration> 
    </plugin> 
</plugins> 

<pluginManagement> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <version>x.x</version> 
      <configuration> 
       <descriptors> 
        <descriptor>src/main/assembly/yourassembly.xml</descriptor> 
       </descriptors> 
      </configuration> 
      <executions> 
       <execution> 
        <id>make-assembly</id> <!-- this is used for inheritance merges --> 
        <phase>package</phase> <!-- append to the packaging phase. --> 
        <goals> 
         <goal>single</goal> <!-- goals == mojos --> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</pluginManagement> 

w Twoim przypadku deskryptor "yourassembly.xml" będzie w następujący sposób:

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd"> 
    <id>yourassembly</id> 
    <formats> 
    <format>tar.gz</format> 
    <format>dir</format> 
    </formats> 
    <fileSets> 

    <fileSet> 
     <directory>${project.basedir}</directory> 
     <includes> 
     <include>README*</include> 
     <include>LICENSE*</include> 
     <include>NOTICE*</include> 
     </includes> 
     <useDefaultExcludes>true</useDefaultExcludes> 
    </fileSet> 

    <fileSet> 
     <directory>${project.build.directory}</directory> 
     <outputDirectory>/</outputDirectory> 
     <includes> 
     <include>*.jar</include> 
     </includes> 
    </fileSet> 

    <fileSet> 
     <directory>${basedir}</directory> 
     <outputDirectory>/</outputDirectory> 
     <includes> 
     <include>textfile.txt</include> 
     </includes> 
    </fileSet> 

    <dependencySets> 
     <dependencySet> 
      <outputDirectory>lib</outputDirectory> 
      <unpack>false</unpack> 
     </dependencySet> 
    </dependencySets> 

    </fileSets> 

</assembly> 
Powiązane problemy