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

  • 8lacKy

    8lacKy

    30 Mart 2009
  • AutoStream's Garage419

    AutoStream's

    15 EKİM 2007
  • Jeb Corliss

    Jeb Corliss

    17 Kasım 2006