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

  • Jordie Jordan

    Jordie Jorda

    27 Ocak 2008
  • Wild Academy

    Wild Academy

    8 Aralık 2009
  • wowchick16

    wowchick16

    17 Mart 2007