1. 程式人生 > >Idea 用Maven自動生成帶有sh和bat啟動指令碼的java應用

Idea 用Maven自動生成帶有sh和bat啟動指令碼的java應用

java做web開發,導致很多人不知道使用Java如何開發普通的專案,這裡我們做個簡單的介紹。
java專案一般都是使用指令碼啟動,比如windows上的bat檔案和linux上的sh檔案,而要寫這些檔案常常需要花費不少精力,很多人肯能會改這種檔案,但是要憑空寫一個就比較費勁。現在有maven外掛幫我們解決這個問題,效果也是不要不要的,具體步驟如下:
第一步:使用maven自帶骨架maven-archetype-quickstart生成一個普通的java專案;
第二步:在pom檔案中增加以下配置:

    <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>appassembler-maven-plugin</artifactId>
        <version>1.2.1</version>
        <executions>
          <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
              <goal>assemble</goal>
            </goals>
          </execution>
        </executions>

        <configuration>
          <!--lib下直接存放jar,沒有路徑資料夾(如com/apache),如果沒有這個選項則放在lib下的jar包會被com/apache類似的多層資料夾包裹起來-->
          <repositoryLayout>flat</repositoryLayout>
          <configurationDirectory>conf</configurationDirectory>
          <configurationSourceDirectory>src/main/resources</configurationSourceDirectory>
          <copyConfigurationDirectory>true</copyConfigurationDirectory>
          <includeConfigurationDirectoryInClasspath>true</includeConfigurationDirectoryInClasspath>
          <!--生成的專案的目錄位置,這裡的client是專案的名稱,你可以根據你的需要自己隨便命名-->
          <assembleDirectory>${project.build.directory}/client</assembleDirectory>
          <!--java啟動引數-->
          <extraJvmArguments>-Xms128m</extraJvmArguments>
          <binFileExtensions>
            <unix>.sh</unix>
          </binFileExtensions>
          <platforms>
            <platform>windows</platform>
            <platform>unix</platform>
          </platforms>
          <repositoryName>lib</repositoryName>
          <programs>
            <program>
              <!--指定主類,指令碼名。會生成shell/bat兩種型別,也可用platforms指定執行平臺-->
              <mainClass>com.test.App</mainClass>
              <!-- 生成的指令碼檔案的名稱,比如start.sh,你也可以根據你的需要命名成其他名字 -->
              <name>start</name>
            </program>
          </programs>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <dependencies>
    這裡專案依賴的元件......
  </dependencies>

第三步:使用mvn clean package appassembler:assemble打包(在eclipse裡可以在Run Configurations中的圖形介面中配置打包命令,這個自己查,我這裡不贅述),打好的包格式如圖:

    1


可以看到自動生成了啟動指令碼檔案,被依賴的jar包放在專案的lib下。
第四步:將專案複製到其他地方,windows下使用cmd開啟命令列,然後將start檔案拖到命令列執行,linux下可以使用nohup ./start.sh &的方式啟動,最後的&是表示專案以後臺程序的方式啟動,否則你關閉命令列,則系統自動退出;
到這裡就介紹完了,另外需要注意的是:
1、如果pom檔案中增加了新的依賴,或者減少的新的依賴,則需要重新使用第三步的命令打包,否則新加入的jar包無法引入到專案的classpath下,我們開啟start.bat或者start.sh檔案就可以看到,命令把每個jar包都加入到classpath下。
2、linux和windows下的啟動檔案雖然類似,但是語法細節嚴重不同,在修改時一定要注意。