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

  • Britec09

    Britec09

    4 Mart 2009
  • Emotional Trancer

    Emotional Tr

    4 Mart 2010
  • H3Ctic (old channel)

    H3Ctic (old

    23 Mart 2011