SORU
24 AĞUSTOS 2010, Salı


Maven: Ambalaj proje KAVANOZ yanında bağımlılıkları?

Çalışma zamanı bağımlılıkları yanında bir paket proje Maven istiyorum. Aşağıdaki bildirim ile JAR dosyası oluşturmak için bekliyoruz:

.....
Main-Class : com.acme.MainClass
Class-Path : lib/dependency1.jar lib/dependency2.jar
.....

ve aşağıdaki dizin yapısını oluşturun:

target
|-- ....
|-- my-project.jar
|-- lib
    |-- dependency1.jar
    |-- dependency2.jar

Anlamı, ana KAVANOZ herhangi bir bağımlılık çıkarmak istiyorum ve tüm geçişli bağımlılıkları kopyalar almak istiyorum "lib" alt-dizin. Herhangi bir fikir?

CEVAP
25 AĞUSTOS 2010, ÇARŞAMBA


Maven gibi çalışma zamanı bağımlılıkları ile bir proje paketi var.

Bu kısmı belirsiz (sonra tarif ettiğiniz şey tam olarak bu değildi). Benim cevabım bahsettiğin şeyleri kapsar.

Aşağıdaki bildirim ile JAR dosyası oluşturmak için bekliyorum (...)

Bunu yapmak için Maven Jar Plugin (ya da daha doğrusu, Maven Archiver) yapılandırma:

<project>
  ...
  <build>
    <plugins>
      <plugin>
         <artifactId>maven-jar-plugin</artifactId>
         <configuration>
           <archive>
             <manifest>
               <addClasspath>true</addClasspath>
               <classpathPrefix>lib/</classpathPrefix>
               <mainClass>com.acme.MainClass</mainClass>
             </manifest>
           </archive>
         </configuration>
      </plugin>
    </plugins>
  </build>
  ...
  <dependencies>
    <dependency>
      <groupId>dependency1</groupId>
      <artifactId>dependency1</artifactId>
      <version>X.Y</version>
    </dependency>
    <dependency>
      <groupId>dependency2</groupId>
      <artifactId>dependency2</artifactId>
      <version>W.Z</version>
    </dependency>
  </dependencies>
  ...
</project>

Ve bu bir liste üretecektir.Aşağıdaki girişleri ile MF:

...
Main-Class: fully.qualified.MainClass
Class-Path: lib/dependency1-X.Y.jar lib/dependency2-W.Z.jar
...

ve aşağıdaki dizin yapısını oluşturmak (...)

Bu yapılabilir Maven Dependency Plugin ve dependency:copy-dependencies hedef kullanıyor. Gelen belgeleri:

  • dependency:copy-dependencies proje listesi ve isteğe bağlı olarak geçişli bağımlılıkları ve fotokopi doğrudan bağımlılıkları da belli bir yere, isterseniz sürümünü sıyırma alır. Bu hedefe komut satırından da çalıştırılabilir.

package Faz bağlayın:

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>2.1</version>
        <executions>
          <execution>
            <id>copy-dependencies</id>
            <phase>package</phase>
            <goals>
              <goal>copy-dependencies</goal>
            </goals>
            <configuration>
              <outputDirectory>${project.build.directory}/lib</outputDirectory>
              <overWriteReleases>false</overWriteReleases>
              <overWriteSnapshots>false</overWriteSnapshots>
              <overWriteIfNewer>true</overWriteIfNewer>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Marques Brownlee

    Marques Brow

    21 Mart 2008
  • Matt Harding

    Matt Harding

    23 Mayıs 2006
  • steven johns

    steven johns

    11 Mart 2011