2016-09-01 19 views
5

Çok basit bir Java konsol uygulaması oluşturmak için Intellij Java 2016.2.2 ve Maven kullanıyorum.Intellij Java 2016 & Maven: bağımlılıkları JAR'a nasıl yerleştirebilirim?

Ben harici bir kitaplık eklemek istiyorum, bu yüzden böyle Maven benim bağımlılık ekleyin: Harici konsolunda ben IDE içinde çalıştırdığınızda iyi çalışır, ancak

<dependency> 
    <groupId>jline</groupId> 
    <artifactId>jline</artifactId> 
    <version>2.12</version> 
</dependency> 

(Ben aşağıdaki hata: java.lang.NoClassDefFoundError).

Kontrol ettim ve herhangi bir nedenden ötürü, yeni oluşturulan JAR'da harici JAR eklenmedi. "Dosya -> Proje Yapısı" nda da birçok şey denedim ama hala çalışmıyor ...

Sadece JAR'ımı bağımlılığımla oluşturmak istiyorum, bu yüzden uygulamanızı bir konsolda aşağıdakileri kullanarak çalıştırabilirim:

java -jar myproject.jar 

Bunu nasıl yapabilirim? Yardım ettiğin için teşekkür ederim!

+2

Maven-assembly bağımlılıkları açıklamasını kullanarak maven-assembly-plugin kullanın .... – khmarbaise

+0

Yardımlarınız için teşekkürler, ancak hala çalışmıyor. Bu yüzden merak ediyorum: "Build -> Build artifacts ..." kullanarak JAR'ımı yapıyorum. Bunu yapmanın doğru yolu mu? – thenaoh

cevap

12

sonra
<project> 
    ... 
    <build> 
    ... 
    <plugins> 
     <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <version>2.6</version> 
     <configuration> 
      <descriptorRefs> 
      <descriptorRef>jar-with-dependencies</descriptorRef> 
      </descriptorRefs> 
     </configuration> 
     ... 
</project> 

, basitçe çalıştırmak, burada ben bunu nasıl:

  • bağımlılıklarını pom.xml dosyasına ekleyin
  • - Dosya -> Proje Yapısı -> Eserler -> Yeni -> JAR -> Modül leri
  • bu klasör "kaynak" oluşturmak, klasör (o MANIFEST.MF)
  • hareket "META-INF" Ana sınıfı seçmek ve src/main içinde, projenizde Tamam
  • tıklayın > o pom aşağıdaki satırları ekleyerek yapmanız kavanoz

DÜZENLEMEYİ

daha iyi (ve daha kolay şekilde) inşa etmek eserler inşa - "kaynaklar" klasörü

  • kurmak gidin. xml dosyası:

    <build> 
        <plugins> 
         <plugin> 
          <artifactId>maven-assembly-plugin</artifactId> 
          <configuration> 
           <archive> 
            <manifest> 
             <mainClass>your.MainClass</mainClass> 
            </manifest> 
           </archive> 
           <descriptorRefs> 
            <descriptorRef>jar-with-dependencies</descriptorRef> 
           </descriptorRefs> 
          </configuration> 
          <executions> 
           <execution> 
            <id>make-assembly</id> 
            <phase>package</phase> 
            <goals> 
             <goal>single</goal> 
            </goals> 
           </execution> 
          </executions> 
         </plugin> 
        </plugins> 
    </build> 
    

    sonra "temiz" ve "paket" maven komutlarını kullanın. Yukarıdaki son 3 adımda (yaklaşık MANIFEST.MF) hala zorunlu görünmektedir.

  • 4

    Tamam, temelde tüm bağımlılıkları (genellikle bağımlılıklar dışsal) içeren bir "şişman kavanoz" (bazen derleme olarak adlandırılır) oluşturmak istersiniz.

    Bunun için bir Maven eklentisi kullanmanız gerekir. Aşağıda örnek bir montaj eklenti yapılandırma jar-with-dependencies: Ben nihayet Intellij Java ile bu JAR oluşturmak başardı

    mvn package 
    
    +0

    Teşekkürler, ilginç görünüyor!Ama şimdi, başka basit bir sorun: "Ana manifest niteliği yok". Görünüşe göre MANIFEST.MF dosyamı bulamıyor ... Herhangi bir fikrin var mı? – thenaoh

    +1

    http://stackoverflow.com/questions/574594/how-can-i-create-an-executable-jar-with-dependencies-using-maven – YMomb

    +0

    Teşekkür ederiz! Buna bir bakacağım! – thenaoh

    İlgili konular