用命令行创建maven项目的教程及实例

653 阅读4分钟

Maven 是一个用于java项目的构建工具。它加快了java开发的构建过程。Maven是持续构建集成的Java工具之一。

Maven有预定义的阶段或目标。目标类似于蚂蚁的目标。开发人员将调用目标来完成他们的任务。

首先,请确保从Apache软件中下载maven并安装它。如果您不确定如何操作,可以查看安装maven。在使你的java项目实施Maven作为构建工具时,需要考虑哪些事项:

  1. 项目对象模型文件
  2. java项目的文件夹结构

使用命令行创建maven项目

首先,使用maven archetype plugin 创建一个maven模板项目。

该原型插件为Web应用、java应用和企业应用提供了不同的模板

archetype:generate 实际目标是提供archetypeArtifactId=maven-archetype-quickstart ,生成基于jar的java应用。

 mvn archetype:generate -DgroupId=com.techrocksz -DartifactId=HelloWorld -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false  
  
Output of this mvn command:-  
  
E:\techrocksz>mvn archetype:generate -DgroupId=com.techrocksz -DartifactId=HelloWorld -DarchetypeArtifactId=maven-archetype-quickstart  
[INFO] Scanning for projects...  
[INFO] Searching repository for plugin with prefix: 'archetype'.  
[INFO] ------------------------------------------------------------------------  
[INFO] Building Maven Default Project  
[INFO]    task-segment: [archetype:generate] (aggregator-style)  
[INFO] ------------------------------------------------------------------------  
[INFO] Preparing archetype:generate  
[INFO] No goals needed for project - skipping  
[INFO] Setting property: classpath.resource.loader.class => 'org.codehaus.plexus.velocity.ContextClassLoaderResourceLoader'.  
[INFO] Setting property: velocimacro.messages.on => 'false'.  
[INFO] Setting property: resource.loader => 'classpath'.  
[INFO] Setting property: resource.manager.logwhenfound => 'false'.  
[INFO] [archetype:generate]  
[INFO] Generating project in Interactive mode  
Define value for version:  1.0-SNAPSHOT: : 1.0.0-SNAPSHOT  
Confirm properties configuration:  
groupId: com.techrocksz  
artifactId: HelloWorld  
version: 1.0.0-SNAPSHOT  
package: com.techrocksz  
 Y: : Y  
[INFO] ----------------------------------------------------------------------------  
[INFO] Using following parameters for creating OldArchetype: maven-archetype-quickstart:1.0  
[INFO] ----------------------------------------------------------------------------  
[INFO] Parameter: groupId, Value: com.techrocksz  
[INFO] Parameter: packageName, Value: com.techrocksz  
[INFO] Parameter: package, Value: com.techrocksz  
[INFO] Parameter: artifactId, Value: HelloWorld  
[INFO] Parameter: basedir, Value: E:\techrocksz  
[INFO] Parameter: version, Value: 1.0.0-SNAPSHOT  
[INFO] ********************* End of debug info from resources from generated POM ***********************  
[INFO] OldArchetype created in dir: E:\techrocksz\HelloWorld  
[INFO] ------------------------------------------------------------------------  
[INFO] BUILD SUCCESSFUL  
[INFO] ------------------------------------------------------------------------  
[INFO] Total time: 30 seconds  
[INFO] Finished at: Fri Dec 02 10:47:29 GMT+05:30 2011  
[INFO] Final Memory: 8M/254M  
[INFO] ------------------------------------------------------------------------

上述命令创建了HelloWorld 应用程序。

首先进入项目目录结构。

在根文件夹中,我们有一个名为src 的文件夹和文件pom.xml ,同时我们还有以下子目录

  • src\\main\\java:- 这个文件夹包含你所有的java类
  • src\\test\\java 这个文件夹包含了所有与java测试相关的类。
  • 我们还有com\techrocksz\App.java和com\techrocksz\AppTest.java文件,这是一个HelloWorld应用程序和它的测试类。

用命令行创建的pom.xml样本:-

Maven使用pom.xml,其中包含关于项目的所有细节以及配置细节。

pom.xml pom.xml是一个项目对象模型配置文件。

<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" 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.techrocksz</groupid>  
  <artifactid>HelloWorld</artifactid>  
  <packaging>jar</packaging>  
  <version>1.0.0-SNAPSHOT</version>  
  <name>HelloWorld</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>  
</project>  

在上面的例子中,groupId:代表项目的包,ExampleDemo-1.0.0.jar文件是在这里创建的。

artifactId: 是项目名称以及模块的jar/war名称。

packaging 指定该模块是web应用程序(即war)还是java模块(即jar)。如果没有指定打包选项,maven将其视为jar模块。

dependencies这里我们写了App,默认情况下JUnit依赖被添加到样本项目中。

运行Maven项目:-

以下是运行Maven项目并安装所有依赖项的步骤:

  • 首先进入应用程序,使用cd HelloWorld
  • 接下来,运行mvn clean install 命令来清理、编译和安装依赖项。

maven执行过程:-

我们已经看到,在pom.xml中配置了repositoriesdependencies 的位置。

当你第一次运行mvn clean install ,它会尝试从仓库下载不同的插件和依赖,并将这些依赖复制到一个文件夹(你的文档和设置文件夹的用户配置文件(即C:\Documents and Settings\username\.m2\repository)。

这在第一次是很耗时的,因为它试图将你所有的插件下载到你的本地仓库。下一次开始,它将下载那些已经下载的jar并快速执行。

下面是该命令的输出:

`E:\techrocksz\HelloWorld>mvn clean install  
[INFO] Scanning for projects...  
[INFO] ------------------------------------------------------------------------  
[INFO] Building HelloWorld  
[INFO]    task-segment: [clean, install]  
[INFO] ------------------------------------------------------------------------  
[INFO] [clean:clean]  
[INFO] Deleting directory E:\techrocksz\HelloWorld\target  
[INFO] [resources:resources]  
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!  
[INFO] skip non existing resourceDirectory E:\techrocksz\HelloWorld\src\main\resources  
[INFO] [compiler:compile]  
[INFO] Compiling 1 source file to E:\techrocksz\HelloWorld\target\classes  
[INFO] [resources:testResources]  
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!  
[INFO] skip non existing resourceDirectory E:\techrocksz\HelloWorld\src\test\resources  
[INFO] [compiler:testCompile]  
[INFO] Compiling 1 source file to E:\techrocksz\HelloWorld\target\test-classes  
[INFO] [surefire:test]  
[INFO] Surefire report directory: E:\techrocksz\HelloWorld\target\surefire-reports  
  
-------------------------------------------------------  
 T E S T S  
-------------------------------------------------------  
Running com.techrocksz.AppTest  
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.047 sec  
  
Results :  
  
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0  
  
[INFO] [jar:jar]  
[INFO] Building jar: E:\techrocksz\HelloWorld\target\HelloWorld-1.0.0-SNAPSHOT.jar  
[INFO] [install:install]  
[INFO] Installing E:\techrocksz\HelloWorld\target\HelloWorld-1.0.0-SNAPSHOT.jar to C:\Documents and Settings\kinturu\.m2\repository\com\techrocksz\HelloWorld\1.0.0-SNAPSHOT\HelloWorld-1.0.0-SNAPSHOT.j  
ar  
[INFO] ------------------------------------------------------------------------  
[INFO] BUILD SUCCESSFUL  
[INFO] ------------------------------------------------------------------------  
[INFO] Total time: 5 seconds  
[INFO] Finished at: Fri Dec 02 11:58:46 GMT+05:30 2011  
[INFO] Final Memory: 15M/254M  
[INFO] ------------------------------------------------------------------------  
`  

最后,你的模块HelloWorld-1.0.0-SNAPSHOT.jar被创建。

现在任何其他应用都可以使用这个模块了。最后,开始学习maven。

settings.xml 必须在文件夹 。C:\\Documents and Settings\\username\\.m2\\

下面是settings.xml 的例子

<proxies>
    <!-- Http Proxy setting configuration-->
    <proxy>
        <id>optional</id>
        <active>true</active>
        <protocol>http</protocol>
        <username>proxyuser</username>
        <password>proxypass</password>
        <host>proxy-hostname.com</host>
        <port>80</port>
        <nonProxyHosts>otherhosts.com</nonProxyHosts>
    </proxy>
    <!-- HTTPS Proxy configuration details -->
    <proxy>
        <id>optional</id>
        <active>true</active>
        <protocol>https</protocol>
        <username>username</username>
        <password>password</password>
        <host>proxy-hostname.com</host>
        <port>80</port>
        <nonProxyHosts>otherhosts.com</nonProxyHosts>
    </proxy>
</proxies>

在Eclipse中,创建一个项目是非常容易的。

以下是具体步骤

  • 在文件菜单中,选择新项目,会打开一个新窗口,如下图所示Maven eclipse web application archetype

选择Maven - Maven项目

  • 点击 "下一步 "按钮,在下一个窗口选择默认值,一个窗口显示Select an Archetype ,如下图所示

Maven eclipse web application archetype

  • 下一个窗口,请输入Group Id,Artifact Idversion 的详细信息。

Maven eclipse web application creation

如果您有任何问题,请留下评论。