2015-04-28 20 views
11

Maven projemde çalışan bir jar dosyası almak istiyorum.Maven, ana klasörünü pom.xml dosyasında doğru klasör yoluna ekleyerek

inşa parçasıdır:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-checkstyle-plugin</artifactId> 
      <version>2.14</version> 
      <dependencies> 
       <dependency> 
        <groupId>com.puppycrawl.tools</groupId> 
        <artifactId>checkstyle</artifactId> 
        <version>6.4.1</version> 
       </dependency> 
      </dependencies> 
      <configuration> 
       <consoleOutput>true</consoleOutput> 
       <configLocation>${basedir}/src/test/resources/checkstyle_swt1.xml</configLocation> 
      </configuration> 
     </plugin> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <version>2.4</version> 
      <configuration> 
       <descriptor>src/assembly/src.xml</descriptor> 
      </configuration> 
      <executions> 
       <execution> 
        <phase>package</phase> 
        <goals> 
         <goal>single</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

    </plugins> 
    <pluginManagement> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.0</version> 
       <configuration> 
        <source>1.7</source> 
        <target>1.7</target> 
        <archive> 
         <manifest> 
          <addDefaultImplementationEntries>true</addDefaultImplementationEntries> 
          <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries> 
          <addClasspath>true</addClasspath> 
          <mainClass>org.jis.Main</mainClass>         
         </manifest> 
        </archive> 
       </configuration> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
</build> 

Yani şu anda benim sorunum benim Kavanoz dosyasına düzgün benim pom.xml ve daha sonra mainclass nasıl uygulanacağı bilmiyorum olmasıdır. Klasör Yapısı: src/main/java/org/JIS/Main.java ama aşağıdaki satırı

<mainClass>src.main.java.org.jis.Main</mainClass> 

eklerseniz çalışmıyor. peşin

cevap

18

İlk içinde

sayesinde ana sınıfı src/main/java içermez. Bu Java dosyasındaki paket bildirimlerine bakın. Örneğin, package org.jis;, ardından ana sınıfı buna ekleyin. Başka bir deyişle, sadece org.jis.Main.

Maven-derleyici eklentisinin yerine maven-jar-plugin'u yapılandırmanız gerekir. Jar-plugin, manifest.MF'nin paketlenmesinden ve oluşturulmasından sorumlu olan kavanoz eklentisidir. http://maven.apache.org/shared/maven-archiver/examples/classpath.html

<build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-jar-plugin</artifactId> 
     ... 
     <configuration> 
      <archive> 
      <manifest> 
       <addClasspath>true</addClasspath> 
       <mainClass>fully.qualified.MainClass</mainClass> 
      </manifest> 
      </archive> 
     </configuration> 
     ... 
     </plugin> 
    </plugins> 
    </build> 
+0

@MartinBaumgarter, pom.xml adımı ekleyerek bir hata alıyorum. proje anlık görüntüsüyle pom.xml [image] (https://imgur.com/a/euvAv) adresini görüntüleyin. – alhelal

+0

Sanırım sadece bir yer tutucu olan 3 noktayı kaldırmalısınız. –

+0

@MartinBaumgarter evet haklısınız. – alhelal

-1

sadece ana sınıfın tam adını kullanmak zorunda itibaren

:

<mainClass>org.jis.Main</mainClass> 
+0

Doğru olsa da, çalışması için uygun Maven eklentisinde olması gerekiyor –

0

Temelde Maven her için maven-eklentisinin bir koleksiyona sahip bir çerçevedir proje oluşturmak için gerçekleştirilen eylem.

Her Bir Aşama (POM)

Yani maven-derleyici eklenti proje derlemeye sadece sorumlu olduğunu ve bildirim dosyası oluşturmaz projenin açıklaması Proje nesne modeli kullanarak maven-plugin tekabül gerçekleştirilir İnşa . Projenin bildirim dosyasının oluşturulmasından maven-jar-plugin sorumludur.

-1

Durumunda, İlkbahar Önyükleme Uygulamasını kullanıyorsunuz. Aşağıdaki tabloya MANIFEST.MF dosyasındaki Main-Class girdisini ekleyeceğiz: Bu, MANIFEST.MF dosyasında Ana-Sınıf girdisini ekleyecektir.

İlgili konular