? mvn archetype:generate 創建Maven項目
? mvn compile 編譯源代碼
? mvn deploy 發布項目
? mvn test-compile 編譯測試源代碼
? mvn test 運行應用程序中的單元測試
? mvn site 生成項目相關信息的網站
? mvn clean 清除項目目錄中的生成結果
? mvn package 根據項目生成的jar
? mvn install 在本地Repository中安裝jar
? mvn eclipse:eclipse 生成eclipse項目文件
? mvnjetty:run 啟動jetty服務
? mvntomcat:run 啟動tomcat服務
? mvn clean package -Dmaven.test.skip=true:清除以前的包后重新打包,跳過測試類
⒈ 把pom文件中配置的依賴jar包打進來,打成一個包:要用maven-assembly-plugin 這個插件,在pom文件加如下配置
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>assembly</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
⒉ 而下面這種配置:在eclipse中,Run as ->Maven build-> install 生成的包,只有該項目自己,<dependencies>里引入的第三方jar并沒打進去;
但用package命令,生成項目本身一個jar,還生成一個*-jar-with-dependencies.jar,依賴的jar 都在這個*-jar-with-dependencies.jar包里,項目本身的包還是它自己
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>
⒊ 如果不想包含依賴的jar包,可以把<build>里面的代碼替換成如下code:
<!-- 打包jar文件時,配置manifest文件,加入lib包的jar依賴 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.xxx.uploadFile</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<!-- 拷貝依賴的jar包到lib目錄 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>
${project.build.directory}/lib
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
⒋ 只包含部分依賴jar包
如果想只包含部分依賴jar包
比如說,想做一個工具jar包,依賴公共jar和自己本地jar包,本地jar包需要解壓成class打到jar包內,而依賴的公共jar包則不需要。
剔除公共jar包 可以用<scope>
<scope>的值的含義:
compile:缺省值,適用于所有階段,會隨著項目一起發布。
provided:類似compile,期望JDK、容器或使用者會提供這個依賴。如servlet.jar。
runtime:只在運行時使用,如JDBC驅動,適用運行和測試階段。
test:只在測試時使用,用于編譯和運行測試代碼。不會隨項目發布。
system:類似provided,需要顯式提供包含依賴的jar,Maven不會在Repository中查找它。
編譯的時候采用 compile
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
<scope>complie</scope>
<optional>true</optional>
</dependency>
在用package打包的時候,改成test,生成的jar包里就不會有該jar包的類了。
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
<scope>test</scope>
<optional>true</optional>
</dependency>