Maven学习(二)使用命令创建maven项目
創建maven項目
手動
嚴格參照約定目錄結構,我們開始手動新增文件夾
命令方式
project項目
我們也可以使用maven自動生成目錄:
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
這句話的命令是創建一個默認的項目,但我在執行這個命令時,命令行會停在
[INFO] Generating project in Batch mode
我操作時,這句話會停很久,
增加一個-X參數,可以查看詳細信息 mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false -X
可以看到,程序停在了下面這一行:[DEBUG] Searching for remote catalog: http://repo1.maven.org/maven2/archetype-catalog.xml
去查詢這個文件的時候網絡比較差或者其他原因,導致掛在那里。
解決方法很簡單:
1. 把上述地址復制到瀏覽器中,下載這個文件到本地。
2. 把文件archetype-catalog.xml復制到目錄${user.home}.m2epositoryorgapachemavenarchetypearchetype-catalog2.2(改過的默認目錄的則放在自己修改好目錄)下面。
3. 在上述命令后增加參數-DarchetypeCatalog=local,讀取本地文件即可。
生成項目文件在:
web項目
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-WebApp -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
生成的文件都存在一個地方,再此就不贅述了。但是 創建好的JavaWeb項目中目前只有src/main/resources目錄,因此還需要手動添加src/main/java、src/test/java、src/test/resources。
項目構建安裝及使用
我的源碼文件:
package com.lsk.mavenCode;
public class HelloWorld{
public String doSay(String perName){
return perName+" say: Hello world";
}
}
測試文件夾下的代碼:
package com.lsk.mavenCode;
//導入junit的包
import org.junit.Test;
import static junit.framework.Assert.*;
public class HelloWorldTest {
@Test
public void testConsoleHello(){
HelloWorld hello = new HelloWorld();
String word = hello.doSay("javaTester");
assertEquals("javaTester say: Hello world",word);
}
}
此時的pom.xml文件內容:
<?xml version="1.0" encoding="UTF-8"?>
<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">
<!--所有的Maven項目都必須配置這四個配置項-->
<modelVersion>4.0.0</modelVersion>
<!--groupId指的是項目名的項目組,默認就是包名-->
<groupId>com.lsk.mavenCode</groupId>
<!--artifactId指的是項目中的某一個模塊,默認命名方式是"項目名-模塊名"-->
<artifactId>ConsoleHello</artifactId>
<!--version指的是版本,這里使用的是Maven的快照版本-->
<version>SNAPSHOT-0.0.1</version>
<name>ConsoleHello</name>
<!--添加依賴的jar-->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
編譯
測試
打包
mvn package
我們可以見到(注意目錄)
安裝
mvn install
在我們的本地maven倉庫(注意目錄是包的地址):
細心的話會發現,后面的每個命令,都會包含前面的命令,其中構建還包含一個mvn clean命名。
在其他項目中使用通過Maven安裝生成的項目jar包
新建項目
新項目的pom.xml文件;
<?xml version="1.0" encoding="UTF-8"?>
<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">
<!--所有的Maven項目都必須配置這四個配置項-->
<modelVersion>4.0.0</modelVersion>
<!--groupId指的是項目名的項目組,默認就是包名-->
<groupId>cn.eric.mavenCode</groupId>
<!--artifactId指的是項目中的某一個模塊,默認命名方式是"項目名-模塊名"-->
<artifactId>CallConsoleHello</artifactId>
<!--version指的是版本,這里使用的是Maven的快照版本-->
<version>SNAPSHOT-0.0.1</version>
<name>CallConsoleHello</name>
<!--添加依賴的jar-->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.lsk.mavenCode</groupId>
<artifactId>ConsoleHello</artifactId>
<version>SNAPSHOT-0.0.1</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
新建項目的源碼:
package cn.eric.mavenCode;
import com.lsk.mavenCode.HelloWorld;
public class CallHelloWorld{
public String sayHelloWorldByCall(String personName){
HelloWorld helloWorld=new HelloWorld();
String result= helloWorld.doSay(personName);
return result;
}
}
Test文件下(有好幾層):
package cn.eric.mavenCode;
import static junit.framework.Assert.assertEquals;
import org.junit.Test;
import com.lsk.mavenCode.HelloWorld;
public class CallHelloWorldTest{
@Test
public void testCallHelloWorld(){
CallHelloWorld call=new CallHelloWorld();
String result=call.sayHelloWorldByCall("Eric");
assertEquals("Eric say: Hello world",result);
}
}
運行上面的命令,
說明引用是成功的。
打包發布web項目
是用外部tomcat
上面使,使用命令創建的JavaWeb項目是一個空的項目,只有一個index.jsp頁面,我們使用Maven將Web項目打包發布運行。
使用命令切換到web項目(到有pom.xml的根),使用 mvn package進行打包:
然后我們可以在web項目的target下看到 .war文件:
將生成的.war文件放到 tomcat的 webapps 目錄下:
開啟tomcat,
打包發布成功。
使用內置jetty
除了使用Tomcat服務器運行Web項目之外,我們還可以在Web項目中集成Jetty發布運行,首先在pom.xml文件中配置Jetty插件,如下:
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-WebApp</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>my-WebApp Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<!--內嵌jetty-->
<build>
<finalName>myWebApp</finalName>
<pluginManagement>
<!--配置Jetty-->
<plugins>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
在web目錄下,有pom.xml的那一層,執行命令:mvn jetty:run:
出現這個,代表已經可以在瀏覽器運行了。
如果啟動內置jetty失敗的話,可以看下自己的8080端口是都被占用了。
總結
以上是生活随笔為你收集整理的Maven学习(二)使用命令创建maven项目的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言进程间通信架构,构建微服务之:微服
- 下一篇: 小程序代码压缩实践