maven編譯war
1. maven如何打WAR包,看到target目錄下面會生成JAR包,如何改成WAR
war插件有個標簽<packagingExcludes>意思是打包時不包含哪些文件,寫具體的文件或目錄,多個用逗號隔開。
例子:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<configuration>
<webappDirectory>WebContent</webappDirectory>
<!-- 必須指定,否則默認會變成在target/war/work 導致被打包進war文件,指定後為target/work -->
<workDirectory>${project.build.directory}/work</workDirectory>
<useCache>false</useCache>
<packagingExcludes>WEB-INF/classes/**/*.*,WEB-INF/lib/**/*</packagingExcludes>
<archive>
<addMavenDescriptor>true</addMavenDescriptor>
</archive>
</configuration>
</plugin>
2. 怎麼將maven項目打包成war包
用命令行完成打包操作,首先需要在開始-運行-cmd,打開cmd命令窗口,使用命令打包,命令為「mvn clean package」,此時會將當前工程執行打包操作,打包成功後會生成*.war形式的war包。
3. idea maven怎麼打war包
右鍵項目,選擇Run As,再選擇Maven build...,這時會彈出個新界面,在Goals里輸入clean package,然後點擊Run就行了,打包好的項目放在target文件夾下面。
clean package是maven的一個命令,意思是測試並打包,它還有很多命令,這里就不多說了。
4. maven打war包是什麼內容
說我伸手黨也罷,我現是想實現用bash來編譯war包,不想要通過第三方來實現(第三方jekin什麼的文檔都是英文的,我看著也麻煩。)所以需要直接maven命令來編譯java源代碼。然後來實現自動化部署。(PS:第三方的自動部署的程序沒有文檔很難用。所以,我想自己寫腳本實現自動獲取svn代碼,並自動部署。)
5. Maven 是怎樣創建War 包
轉載 最近在網上看到一篇介紹maven基礎知識的文章,覺得對初學Maven的朋友一定有幫助。水平有限,翻譯的不好,請大家見諒。
介紹
在處理WEB應用的時候,最終使用的工程文件是以War包的形式交付。Maven編譯系統可以輕松的創建War包。接下來就讓我們看看Maven是如何把一個源文件的工程轉換成War包的。
Maven 版本 Apache Maven 3.0.4
工程實例
讓我們來看看這個非常典型的Maven化的WEB工程
對應的POM.xml如下:
我們用此命令War包
1 mvn package
War生成在根目錄下
1 /target/myprojectname.war
如下圖,概況Maven生成War包過程
Maven 默認配置
我們都知道Maven可以很容易的把源文件工程創建為War包,但是POM文件中什麼也沒有設置。這是怎麼回事啊?實際上Maven有自己默認的設置。這稱之為 「convention over configuration」,Maven在配置中提供默認值。
第一,因為有一些Maven插件本身就與Maven 的生命周期綁定在一起。例如,在編譯階段使用
compiler:compile 作為默認命令。這就意味著當執行到編譯階段compiler plugin 被調用執行。如果選擇生成WAR,那麼 war:war 會與這個階段綁定。
第二,當沒有明確設置參數的時候,插件都會有自己默認值。例如 compiler:compile 目標有個參數是 compilerId。當默認值是 javac就意味著JDK 會被使用。當需要生成其他形式時可以重寫此配置。
第三,一些設置包含在 Super POM,此文件是POM文件默認繼承的。從Mavne3 起 Super POM 被放在
1 maven_dir/lib/maven-model-builder-3.0.3.jar:org/apache/maven/model/pom-4.0.0.xml
在這里我們可以發現很多默認的配置信息
Maven 生命周期
在我們的工程中,當執行 mvn package 命令,maven會執行它整個生命周期中的六個階段
1 process-resources, compile, process-test-resources, test-compile, test and package
每個階段會包含一個或多個目標。Maven 插件提供目標:一個插件可以有一個或多個目標。例如
Compiler 插件有兩個目標:compiler:compile 和 compiler:testCompile
我們可以使用 mvn help:describe -Dcmd=phasename 命令列出如下內容
下面讓我們看看每個目標
1.resources:resources
此目標用來將資源文件夾下的內容拷貝到輸出目錄
2.compiler:compile
此目標編譯源項目工程
3.resources:testResources
此目標拷貝測試資源到測試輸出目錄
4.compiler:testCompile
此目標編譯測試項目
5.surefire:test
此目標執行工程的單元測試,編譯的測試類放在 /target/test-classes
6.war:war
此目錄創建War包。它會把所有需要的文件放在
1 /target/myprojectname/
而後將他們打包生成 **.war。其中一個步驟是將 /src/main/webapp/ 拷貝到輸出目錄。
War插件另外一個重要步驟是拷貝Class文件到到 WEB-INF/classes目錄和項目所依賴的jar包到 WEB-INF/lib目錄。
默認情況下,插件還包含兩個Maven描述文件:
META-INF/maven/${groupId}/${artifactId}/pom.xml
pom.properties 文件,META-INF/maven/${groupId}/${artifactId}/pom.properties
1 #Generated by Maven
2 #Sat May 12 00:50:42 CEST 2012
3 version=1.0-SNAPSHOT
4 groupId=mygroup.com
5 artifactId=myprojectname
最終的War包放在/target/目錄下。
項目依賴
pom.xml文件會有一個默認的(JUnit)依賴。我們可以加另外一個常用的Jar log4j。
1
2 log4j
3 log4j
4 1.2.16
5
當沒有設置依賴范圍 ( scope),默認為 compile scope。這就意味著此依賴在編譯、測試、運行階段都可以得到。
只要是運行中會用到的jar包,都會拷貝到 /WEB-INF/lib目錄
轉載
6. maven編譯工程war包、各位大大有誰遇到類似問題
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.abc.ABCTest</mainClass> -->入口類名
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id></id>
<phase>install</phase>
<goals>
<goal>-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory> -->拷貝所以依賴存放位置
</configuration>
</execution>
</executions>
</plugin>
</plugins>
7. maven項目打包成war包,放到tomcat下運行報錯
ss-0.01-snapshot.jar要看這個是什麼jar包,裡面的struts.xml配置錯誤。
8. maven打war包,然後在tomcat上運行
1、Maven打war包命令:(該命令到POM文件目錄執行)
mvnpackage-DskipTests (該命令會跨過maven的測試直接打包)
2、TOMCAT的啟動問題:
異常:java.lang.incompatibleclasschangeerror: Implementing class
問題解決1:該問題可能為版本不兼容的問題,需要在POM.XML文件中加入plugin的配置:
<!--compiler插件,設定JDK版本-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
<showWarnings>true</showWarnings>
</configuration>
</plugin>
9. maven項目如何生成war文件
配置 你的pom.xml文件,在你的overview視窗里 配置 packaging為 war 然後
然後點擊 pom.xml右鍵,run as 選擇 install 或是 package
如果項目沒問題,配置沒問題
就會在項目的target 的目錄里生成 war文件,