您的位置:首页 > 其它

Maven学习(二)使用命令创建maven项目

2017-05-15 19:08 411 查看

创建maven项目

手动

严格参照约定目录结构,我们开始手动新增文件夹



命令方式

project项目

我们也可以使用maven自动生成目录:

mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false




这句话的命令是创建一个默认的项目,但我在执行这个命令时,命令行会停在

[code][INFO] Generating project in Batch mode
[/code]
我操作时,这句话会停很久,

增加一个-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[/code] 
去查询这个文件的时候网络比较差或者其他原因,导致挂在那里。

解决方法很简单:

1. 把上述地址复制到浏览器中,下载这个文件到本地。
2. 把文件archetype-catalog.xml复制到目录${user.home}\.m2\repository\org\apache\maven\archetype\archetype-catalog\2.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端口是都被占用了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: