2012-07-31 12 views
17

Oto pom.xmlJak skonfigurować Maven: montaż ścieżkę główną w słoiku

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>org.springframework.webflow</groupId> 
    <artifactId>spring-js-resources-thin</artifactId> 
    <version>2.2.1.RELEASE</version> 
    <name>Spring js lib</name> 
    <description>Spring javascript library without dojo</description> 
    <build> 
     <plugins> 
      <plugin> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <version>2.2.1</version> 
       <configuration> 
        <descriptors> 
         <descriptor>src/main/assembly/assembly.xml</descriptor> 
        </descriptors> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

i tutaj jest assembly.xml

<assembly> 
    <id>js-jar</id> 
    <formats> 
     <format>jar</format> 
    </formats> 
    <fileSets> 
     <fileSet> 
      <directory>src/main/resources/</directory> 
      <outputDirectory>/</outputDirectory> 
      <includes> 
       <include>META-INF/**/*</include> 
      </includes> 
     </fileSet> 
    </fileSets> 
</assembly> 

Problem polega na tym, spędzaj otworzyć wygenerowany plik jar (spring-js-resources-thin-2.2.1.RELEASE-js-jar.jar), folder główny jest zawsze nazywany artifactid-version (spring-js-resources-thin-2.2.1.RELEASE), a następnie META-INF.

Zastanawiam się, że jest tak, że mogę zbudować plik JAR o nazwie pliku artifactid-version.jar, ale BEZ artifactid-version w ścieżce klasy, tak jak każdy słoik w repozytorium maven. Myślę, że powinna istnieć opcja lub sposób na nazwanie <outputDirectory>.

+1

Czy próbowałeś użyć 'maven-jar-plugin' do tworzenia słoików? –

Odpowiedz

39

Trzeba powiedzieć maven montaż plugin nie obejmuje katalog bazowy w archiwum, które można osiągnąć za pomocą następujących czynności:

<assembly> 
    <id>js-jar</id> 
    <formats> 
     <format>jar</format> 
    </formats> 
    <includeBaseDirectory>false</includeBaseDirectory> 
    <fileSets> 
     <fileSet> 
      <directory>src/main/resources/</directory> 
      <outputDirectory>.</outputDirectory> 
      <includes> 
       <include>META-INF/**/*</include> 
      </includes> 
     </fileSet> 
    </fileSets> 
</assembly> 

a sugestie dotyczące korzystania maven-jar-plugin jest bardzo dobrze, bo wygląda na to, że źle wykorzystujesz wtyczkę maven-assembly.

W najnowszych wersjach wtyczki maven-assembly należy . jako folder główny. Jeśli użyjesz /, otrzymasz ostrzeżenie.

+0

Tak! Dokładnie tego potrzebuję. Dziękuję Ci. – Dreamer

3

Dodaj element do złożenia w taki sposób.

<assembly> 
    <id>js-jar</id> 
    <formats> 
     <format>jar</format> 
    </formats> 

    <baseDirectory>myBaseDir</baseDirectory> 

    <fileSets> 
     <fileSet> 
      <directory>src/main/resources/</directory> 
      <outputDirectory>/</outputDirectory> 
      <includes> 
       <include>META-INF/**/*</include> 
      </includes> 
     </fileSet> 
    </fileSets> 
</assembly> 

Jeśli wyłączysz <includeBaseDirectory> off wówczas archiwum nie będzie miał żadnego pierwiastka. To zależy od tego, czego chcesz. Wolę na przykład pliki zip, aby mieć katalog podstawowy, tak aby nie zanieczyścił katalogu, w którym się znajdujesz, jeśli zapomnisz utworzyć katalog i cd przed rozpakowaniem. O wiele bardziej wygodny.

Powiązane problemy