maven最佳實踐

maven是一個優秀的項目管理工具。目前市面上優秀的書籍就是《maven實戰》。
依舊不能解決問題:
1.maven內置變量
Maven內置變量說明:
${basedir} 項目根目錄
${project.build.directory} 構建目錄,缺省爲target
${project.build.outputDirectory} 構建過程輸出目錄,缺省爲target/classes
${project.build.finalName} 產出物名稱,缺省爲${project.artifactId}-${project.version} 當前版本
${project.packaging} 打包類型,缺省爲jar
${project.xxx} 當前pom文件的任意節點的內容java

<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>cn.com.travelman</groupId>
  <artifactId>CommonRestService</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>RestService</name>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
   <dependencies>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>
         <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>ServiceData</artifactId>
        <version>${project.version}</version>
        </dependency>
  </dependencies>
  <build>
   <plugins>
         <plugin>  
        <groupId>org.apache.maven.plugins</groupId>  
        <artifactId>maven-compiler-plugin</artifactId>  
        <configuration>  
          <source>1.7</source>  
          <target>1.7</target>  
        </configuration>  
      </plugin> 
  <plugin>  
                <groupId>org.apache.maven.plugins</groupId>  
                <artifactId>maven-jar-plugin</artifactId>  
                <configuration>  
                    <archive>  
                        <manifest>  
                            <addClasspath>true</addClasspath>  
                            <mainClass>cn.com.travelman.service.rest.publish.Server</mainClass>  
                        </manifest>  
                    </archive>  
                </configuration>  
            </plugin>  
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
                            <overWriteReleases>false</overWriteReleases>
                            <overWriteSnapshots>false</overWriteSnapshots>
                            <overWriteIfNewer>true</overWriteIfNewer>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
 </plugins>
  </build>
</project>

maven一個重要的特色就是:能夠將classpath路徑的值寫入jar的MF文件中。這樣就能夠直接運行jar文件。
使用maven-jar-plugin能夠作到這一點。 <addClasspath>true</addClasspath>就表示將依賴的包路徑寫入到MF文件中。但要注意,寫入的classpath只是包的名字,因此運行的JAR包要和lib包要在同一個目錄下。apache

maven能夠在一個工程裏面引入另一個工程:maven

<dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>ServiceData</artifactId>
        <version>${project.version}</version>
        </dependency>

沒錯,artifactId就是你另一個工程的artifactId。這樣比起使用java build path去引用是否是牛逼方便不少?工具

而且用maven-dependency-plugin將這些包導出到指定的目錄中間。ui

此外,去 http://mvnrepository.com/搜索想要的包的配置。spa

另一個問題:這些搜索出來的配置並非你想要的配置。好比搜索 apache cxf。
這個時候去官網下載sample,找裏面的POM文件配置。rest

如何給maven配置多個源文件:
http://casheen.iteye.com/blog/540385code

相關文章
相關標籤/搜索