2015-04-28 42 views
11

我想用我的maven項目獲得一個可用的jar文件。Maven將pom.xml中的mainClass添加到正確的文件夾路徑

構建的部分是:

<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> 

所以現在我的問題是,我不知道如何正確地進入我的pom.xml後來實施mainclass到我的jar文件。 的文件夾結構爲:的src/main/JAVA /組織/ JIS/Main.java 但如果我添加以下行

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

這是行不通的。

在此先感謝

回答

18

首先,你的主類不包括src/main/java。查看該Java文件中的包聲明。例如,package org.jis;,然後將主類添加到該類。換句話說,它只是org.jis.Main

您需要配置maven-jar-plugin而不是maven-compiler-plugin。 jar-plugin負責打包和創建manifest.MF。

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'中加入我得到一個錯誤。用項目快照查看我的pom.xml [image](https://imgur.com/a/euvAv)。 – alhelal

+0

我想你應該刪除只是一個佔位符的3個點。 –

+0

@MartinBaumgarter是的,你是對的。 – alhelal

-1

你必須使用你的主類的全名:

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

雖然正確,但它需要在正確的Maven插件中才能正常工作 –

0

基本上Maven是一個框架,有Maven的插件的集合,爲每一位爲建立一個項目而採取的行動。

每個構建階段是利用項目的描述項目對象模型對應的Maven的插件(POM)

所以Maven的編譯器插件只是負責編制項目,它不會創建清單文件進行。

maven-jar-plugin負責創建項目的清單文件。

-1

如果您正在使用Spring Boot Application。在pom.xml中添加以下內容

  <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
     </plugin> 

這將在MANIFEST.MF文件中添加Main-Class條目。

相關問題