2012-09-26

怎麼將 Source Code 與 Dependency Library 包成一個 Jar 檔?

如果只是用 mvn package,只會將 source code 包成 jar 檔,當要作成可執行的 jar 檔時,就得附上 source code 用到的 dependency,最好的方法就是包在一起。

我在 可執行的 Jar(Executable Jar)有意識到這一點,但當時以為 mvn package 就可以達成這個目的,事實上不然,當時只是剛好碰對了。

要加上以下這個 maven-shade-plugin 才可以用 mvn package 包成一包。

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>2.0</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
上面的定義大概是說,在執行 package 這個 phase 時(這是個 Lifecycle 階段),要去執行 maven-shade-plugin 這個 plugin 的 shade 這個 goal,goal 可以想像成是 Ant 的 Target。

這就是 Maven 不變的 Lifecycle 下可變的 Plugin 範例,不變的 Lifecycle 讓所有人都知道怎麼 build 一個 Maven project,可變的 Plugin 可以滿足各種獨特的需求。
---
---
---

沒有留言:

張貼留言