2014-01-24 26 views
3

我試圖用彈簧引導屬性啓動春天引導屬性啓動無法使用

<plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jar-plugin</artifactId> 
      <configuration> 
       <archive> 
        <manifest> 
         <mainClass>org.springframework.boot.loader.PropertiesLauncher</mainClass> 
        </manifest> 
        <manifestEntries> 
         <Start-Class>com.att.hadoop.loader.run.Application</Start-Class> 
        </manifestEntries> 
       </archive> 
      </configuration> 
     </plugin> 

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

當我看到清單文件,它看起來像這樣

$ unzip -q -c hdfsloader-0.0.1-SNAPSHOT.jar META-INF/MANIFEST.MF 
Manifest-Version: 1.0 
Built-By: aq728y 
Build-Jdk: 1.7.0_25 
Start-Class: org.springframework.boot.loader.PropertiesLauncher 
Created-By: Apache Maven 3.1.0 
Spring-Boot-Version: 1.0.0.RC1 
Main-Class: org.springframework.boot.loader.JarLauncher 
Archiver-Version: Plexus Archiver 

爲什麼我mainclass任何想法和startclass是錯誤的

我想將它設置爲

的Main-Class :org.springframework.boot.loader.PropertiesLauncher

啓動類:com.att.hadoop.loader.run.Application

回答

11

的彈簧引導Maven的插件重寫你的表現,特別是其管理Main-ClassStart-Class條目,所以你必須在那裏配置那些(不在jar插件中)。清單中的Main-Class實際上由引導插件的layout屬性控制,例如,

<plugin> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-maven-plugin</artifactId> 
    <version>1.0.0.RC1</version> 
    <configuration> 
    <mainClass>${start-class}</mainClass> 
    <layout>ZIP</layout> 
    </configuration> 
    <executions> 
    <execution> 
     <goals> 
     <goal>repackage</goal> 
     </goals> 
    </execution> 
    </executions> 
</plugin> 

佈局屬性默認爲基於歸檔類型(JAR或WAR)的猜測。對於PropertiesLauncher佈局是「ZIP」。

+0

謝謝..這項工作。我有一個問題是,我有src/main/resources中的文件,我試圖以ClassPathResoure(「classpath:datasource.props」)的形式訪問它們。它在eclipse中工作,但在構建啓動jar文件後無法找到它文件。 HOw是可用於應用程序的這些類路徑資源 – adeelmahmood

+0

這樣的聲音應該可以工作。 jar插件的默認設置會將這些文件放入存檔的根目錄中。你可以檢查他們在那裏嗎?什麼是你的類路徑設置? –

+0

來自資源文件夾的文件似乎在jar的根目錄下,並且不能確定類路徑設置。我沒有明確指定任何內容。檢索文件的代碼如下所示:「r = new ClassPathResource(path.replaceFirst(」classpath:「,」「));」 – adeelmahmood