`
wanghaisheng
  • 浏览: 89815 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

maven学习5——实践maven2,您的第一个maven项目

阅读更多

实践 Maven 2:您的第一个 Maven 2 项目

在第一个实践的例子里,您将看到如何用最小的努力使用 Maven 2 构建简单项目。Maven 2 内置的关于 Java 项目的知识消除了其他构建工具也许必须要经历的冗长的配置过程。

处理数值操作的类

该例使用了一个处理数值操作的类。这个主体类的源代码(叫做 NumOps)如清单 4 所示。


清单 4.NumOps 类

                    
package com.ibm.devworks;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class NumOps {
  private List <Operation> ops = new ArrayList 
<Operation>(); 
  public  NumOps() {
    ops.add( new AddOps());
  }
  public Operation getOp(int i)
   { Operation retval; 
   if (i > ops.size())  
      { retval = null; 
   } else { 
     retval = (Operation) ops.get(i);
   } return retval; 
  }
  public int size() { 
    return ops.size(); 
  }
  public static void main( String[] args ) {
    NumOps nop = new NumOps(); 
    for (int i=0;  i < nop.size(); i++) { 
      System.out.println( "2 " + 
        nop.getOp(i).getDesc() + 
        " 1 is " + 
        nop.getOp(i).op(2,1) ); 
    }
  }
}

 

NumOps 类管理一个能够在两个整数上执行数值操作的对象集。main 方法创建一个 NumOps 实例,然后调用由 NumOps 管理的每个对象,同时分别调用它的 getDesc() 方法和 op() 方法。由 NumOps 管理的所有对象都实现了在 Operation.java 中定义的 Operation 接口,接口代码如清单 5 所示:


清单 5. Operation 接口

                    
package com.ibm.devworks;

public interface Operation {
   int op(int a, int b);
   String getDesc();
}

 

在这个初始的例子里定义的惟一操作是一个 AddOps 类,如清单 6 所示:


清单 6. AddOps 类

                    
package com.ibm.devworks;

public class AddOps implements Operation {
   public int op(int a, int b) {
      return a+b;
   }
   public String getDesc() {
      return "plus";
   }
}

 

执行 NumOps 类时,会打印出下列输出:

 2 plus 1 is 3

 


使用 Archetype 来创建初始项目

要创建能用 Maven 构建的简单 Java 项目所需的一切,可以使用 Archetype 插件,它是 Maven 2 中的标准插件。不同于构建阶段插件,Archetype 在 Maven 项目构建生命周期之外运行,用于创建 Maven 项目。在您想要包含 NumOps 项目的目录中执行下列命令(将所有命令敲在一行):

mvn archetype:create -DarchetypeGroupId=org.apache.maven.archetypes 
  -DgroupId=com.ibm.devworks -DartifactId=NumOps

 

该命令为 Archetype 插件提供您模块的坐标:com.ibm.devworks/NumOps/1.0-SNAPSHOT。在此情况下,不需要指定版本,因为 Archetype 插件常默认为 1.0-SNAPSHOT。此命令为项目创建了一个起始的 pom.xml 文件,也创建了规范的 Maven 2 目录结构。您将在本教程源代码下载处的 example1 目录下找到该代码(参见 下载)。

该输出应该与清单 7 类似:


清单 7. 使用 Maven Archetype 创建 NumOps 项目

                    

[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'archetype'.
[INFO] -------------------------------------------------------------------------
---
[INFO] Building Maven Default Project
[INFO]    task-segment: [archetype:create] (aggregator-style)
[INFO] -------------------------------------------------------------------------
---
[INFO] Setting property: classpath.resource.loader.class => 'org.codehaus.plexus

...

[INFO] [archetype:create]
[INFO] Defaulting package to group ID: com.ibm.devworks
[INFO] -------------------------------------------------------------------------
---
[INFO] Using following parameters for creating Archetype: maven-archetype-quicks
tart:RELEASE
[INFO] -------------------------------------------------------------------------
---
[INFO] Parameter: groupId, Value: com.ibm.devworks
[INFO] Parameter: packageName, Value: com.ibm.devworks
[INFO] Parameter: basedir, Value: C:\temp\maven
[INFO] Parameter: package, Value: com.ibm.devworks
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: artifactId, Value: NumOps
[INFO] ********************* End of debug info from resources from generated POM
 ***********************
[INFO] Archetype created in dir: C:\temp\maven\NumOps
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1 second
[INFO] Finished at: Sat Dec 02 22:04:02 EST 2006
[INFO] Final Memory: 4M/8M
[INFO] ------------------------------------------------------------------------


 

Archetype 插件创建了一个目录树、一个 pom.xml 文件和一个占位符 App.java 应用程序文件。它也为单元测试源码创建了一棵目录树,还创建了一个占位符 AppTest.java 单元测试文件。这个项目已经准备就绪。图 6 显示了该 Archetype 插件创建的目录和文件。


图 6. Archetype 生成的目录和文件
Archetype 生成的目录和文件

您只需将 NumOps.java、Operation.java 和 AddOps.java 文件移到 App.java 的位置,并移除 App.java。在下一部分中,将做出一些改变来定制生成的 pom.xm。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics