使用maven插件構建項目安裝包

gp3054 8年前發布 | 38K 次閱讀 Maven 項目構建

來自: http://my.oschina.net/u/1241970/blog/628640


    因項目需要,需要在一開源項目上做二 次開發,對開發后的項目需要再構建出自己的安裝包(如Linux下的*.tar.gz,Windows下的*.zip格式)。從網上搜索資料發現maven插件可以實現這個需求。現把已經驗證成功的maven的插件配置pom文件分享。以備有共同需要的人可以參考,同時給自己做個備忘:

pom.xml內容如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>xxxx</groupId>
  <artifactId>xxxxx</artifactId>
  <version>3.4.6</version>
  <name>xxxx</name>
  <description>xxxxx</description>
  
  <properties>
    <target.dir>target</target.dir>
  </properties>

  <dependencies>
    <dependency>
      ....
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <!-- 指定多個源代碼目錄、多個資源文件目錄 -->
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <version>1.8</version>
        <executions>
          <execution>
            <id>add-source</id>
            <phase>generate-sources</phase>
            <goals>
              <goal>add-source</goal>
            </goals>
            <configuration>
              <sources>
                <source>src/java/main</source>
                <source>src/java/generated</source>
              </sources>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <!-- 編譯插件 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.0</version>
        <configuration>
          <source>1.6</source>
          <target>1.6</target>
           <encoding>UTF8</encoding> 
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.6</version>
        <configuration>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin>
      <!-- 生成源文件jar包文件 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <version>2.1.1</version>
        <executions>
          <execution>
            <id>attach-sources</id>
            <goals>
              <goal>jar-no-fork</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <!-- 打字節碼包插件 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.4</version>
        <configuration>
          <includes>
            <classesDirectory>org/</classesDirectory>
          </includes>
          <executions>
            <execution>
              <id>make-a-jar</id>
              <phase>compile</phase>
              <goals>
                <goal>jar</goal>
              </goals>
            </execution>
          </executions>
        </configuration>
      </plugin>
      <!-- 部署插件 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.4</version>
        <configuration>
          <descriptors>
            <descriptor>assembly.xml</descriptor>
          </descriptors>
        </configuration>
        <executions>
          <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

其中,assembly.xml是部署插件maven-assembly-plugin的配置文件,在assembly.xml里指定哪些資源需要部署到安裝包中。其內容如下:

<assembly xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/assembly-2.2.xsd">
  <id>full</id>
  <formats>
    <format>tar.gz</format> <!--Linux系統下打包文件格式 -->
    <format>zip</format> <!--Windows系統下打包文件格式 -->
  </formats>
  <includeBaseDirectory>true</includeBaseDirectory>
  <dependencySets>
    <dependencySet>
      <outputDirectory>lib</outputDirectory><!-- 將scope為runtime的依賴包打包到lib目錄下。 -->
      <scope>runtime</scope>
      <useProjectArtifact>false</useProjectArtifact>
    </dependencySet>
  </dependencySets>
  <fileSets>
    <fileSet>
      <outputDirectory>/</outputDirectory>
      <directory>/</directory>
      <includes>
        <include>bin/*</include>
        <include>conf/*</include>
        <include>*.xml</include>
        <include>*.txt</include>
      </includes>
      <excludes>
        <exclude>pom.xml</exclude>
        <exclude>build.xml</exclude>
        <exclude>build_bak.xml</exclude>
        <exclude>assembly.xml</exclude>
      </excludes>
    </fileSet>
     <fileSet>  
            <directory>/target/</directory>  
            <outputDirectory>/</outputDirectory>  
            <includes>
              <include>*.jar</include>
            </includes>
        </fileSet> 
  </fileSets>
</assembly>

 

 本文由用戶 gp3054 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!