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

Maven2 的简单用法

阅读更多

1.Maven的安装
1.1Windows 2000/xp下的安装
1.      解压缩maven-2.0.2-bin.zip到你希望安装Maven 2.0.2的所在目录。这里假设你选择了C:\ProgramFiles\Apache Software Foundation\maven-2.0.2.

2.      将C:\Program Files\Apache Software Foundation\maven-2.0.2\bin目录加入到你的%path%环境变量中。

3.      同时,确认JAVA_HOME是否正确设置成功。

4.      运行 mvn --version 确认是否安装成功。

显示Maven version: 2.0.2 则表示安装成功。

1.2基于Unxi-based的操作系统(Linux,Solaris and Mac OS X)
1.      解压缩发布包到你希望安装Maven 2.0.2的所在目录。这里假设你选择了/usr/local/maven-

2.      将/usr/local/maven-2.0.2/bin目录加入到你的path环境变量中,例如:PATH=/usr/local/maven-2.0.2y/bin: $PATH。

3.      同时,确认JAVA_HOME是否正确设置成功。

4.      运行 mvn --version 确认是否安装成功。

显示Maven version: 2.0.2 则表示安装成功。

 

2.Maven2.0的一些优点:
--标准的项目布局和项目结构生成器
--多项目支持(只对开发环境相同的项目)
--在开发者需要的时候及时地下载新的插件和功能部件(主要的好处)

--标准的依赖管理机制
--生成最新项目信息的网站
--集成了源代码控制软件:CVS和Subversion

 

2.1项目标准化(提供预定义的目录模板)
      Maven一个重要特性是定义了项目的标准模板,官方说法是最佳实践。好的目录结构可以使开发人员更容易理解项目,为以后的维护工作也打下良好的基础。Maven2根据业界公认的最佳目录结构,为开发者提供了缺省的标准目录模板。Maven2的标准目录结构如下:


使用目录模板,可以使pom.xml更简洁。因为Maven2已经根据缺省目录,预定义了相关的动作,而无需人工的干预。以resources目录为例:

src/main/resources,负责管理项目主体的资源。在使用Maven2执行compile之后,这个目录中的所有文件及子目录,会复制到target/classes目录中,为以后的打包提供了方便。
src/test/resources,负责管理项目测试的资源。在使用Maven2执行test-compile之后,这个目录中的所有文件及子目录,会复制到target/test-classes目录中,为后续的测试做好了准备。
 

      可以通过命令:mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app创建一个单一的maven项目。创建好的项目,具有了特定的项目结构。这个项目结构是参考业界的最佳实践而成,为后面使用统一的maven命令打下了基础,如测试mvn test、打包mvn package(在打包时需要指定web.xml,规范的结构可以不用指定)等,无需写一行脚本,就可以方便的实现众多功能。Maven还提供其它一些类型模板,可以通过添加-DarchetypeArtifactId={type}创建,如-DarchetypeArtifactId=maven-archetype-site,生成site类型的项目。

   有了这个标准,项目间能方便的进行交流,你也很容易了解其它使用maven项目的结构。对于企业来说,引入maven就自然引入了规范,这可比费时费力的写文档,定规范有效的多了。

 

2.2文档和报告
使用mvn site可以快速生成项目站点,apache很多开源项目站点都采用maven生成,会出现built by maven字样的图标。

而maven提供的针对如junit,checkstyle,pmd等的插件,能够方便的进行测试和检查并能直接生成报告。使用都很简单,如mvn surefire-report:report 就能自动进行junit测试,并生成junit报告,mvn pmd:pmd生成pmd报告。具体使用可以在http://maven.apache.org/plugins/index.html找到。

2.3类库管理
Maven一个很重要的特色就是类库管理。通过在pom.xml中定义jar包版本和依赖,能够方便的管理jar文件。以下是一个简单的jar定义片断:

<dependency>                                                                      

      <groupId>org.hibernate</groupId>

      <artifactId>hibernate</artifactId>

      <version>3.1</version>

      <type>jar</type>

      <scope>runtime</scope>

 </dependency>

这个片断告诉我们,依赖的jar包groupId为org.hibernate,artifactId为hibernate,版本为3.1,scope为runtime。在实际项目中,会将M2_REPO(maven本地仓库地址)/ org/hibernate / hibernate /3.1/ hibernate -3.1.jar放入classpath。

同时maven会通过pom.xml管理jar包间的依赖。比如上面的hibernate-3.1.jar同级目录肯定会有一个hibernate -3.1.pom,在这个pom文件中指定了这个jar对其它一些jar的依赖。而这个pom文件是远程仓库提供,无需进行修改,执行maven相关命令就会自动根据相关依赖去下载jar包。这样只需定义对hibernate的依赖而无需关心相关jar,在构建项目上方便了很多。

因为pom文件对jar的管理,也产生了一个很吸引人的特性:项目文件很小。以往一个web项目中,jar文件都要放入WEB-INF/lib下,并放入cvs(svn)中,很容易就达到几十M。而通过maven,只需一个pom.xml,在执行mvn eclipse:eclipse时再去远程仓库下载,项目文件一般只需几百K。

<dependency>中还引入了<scope>,它主要管理依赖的部署。目前<scope>可以使用5个值:

compile,缺省值,适用于所有阶段,会随着项目一起发布。

provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。

runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。

test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。

system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。

2.4发布管理
使用maven可以方便的进行项目发表管理。在项目开发到一定阶段,可以使用mvn package打包,它会自动先运行mvn test,跑所有的testcase,只有全部通过才能正确打包。生成的war包(如果项目的packaging为war)在target目录下。这个war包与使用ant脚本生成一样,但无需一行脚本,这也是maven对比ant的优势之一。使用mvn install将编译和打包好的文件发布到distributionManager指定的远程repository。使用mvn deploy可以自动管理项目版本。

3.常用的命令
您可以在Maven安装目录下的conf目录中,或者项目自身中修改Maven远程存储库的选择。POM是“项目对象模型”的缩写。

创建完项目后,我们可以往项目里添加代码并使用Maven的所有全新技巧。注意以下命令必须在pom.xml文件所在的目录中运行。
--mvn test:运行应用程序中的单元测试
--mvn package:依据项目生成jar文件
--mvn install,把包安装在本地的repository中,可以被其他工程作为依赖来使用
--mvn site:生成项目相关信息的网站
--mvn clean:清除目标目录中的生成结果
--mvn eclipse:eclipse:生成Eclipse项目文件

--mvn deploy,在整合或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。

可以通过对目标及相位的组合使得一个命令完成多个功能,比如:

 mvn clean dependency:copy-dependencies package

关于常用命令的详解,见参考资料。

4.第一个例子
参见《Maven入门--概念与实例》

 

D:\maven\demo>mvn archetype:create -DgroupId=ce.demo.mvn -DartifactId=app
该工程的groupId是ce.demo.mvn,那么该工程的源文件将放在Java包ce.demo.mvn中。artifactId是app,那么该工程根目录的名称将为app。

D:\maven\demo>mvn archetype:create -DgroupId=ce.demo.mvn -DartifactId=webapp -DarchetypeArtifactId=maven-archetype-webapp

此命令与创建app的命令的不同之处是,多设置了一个属性archetypeArtifacttId,该属性的值为maven-archetype-webapp。即告诉Maven,将要创建的工程是一个Web应用工程。创建app工程时没有使用该属性值,是由于archetype默认创建的是应用程序工程。详细的解释及命令参数见http://maven.apache.org/plugins/

不用担心如何从WEB-INF/lib目录中得到依赖项,在依赖属性值被设置成compile的情况下,Maven会自动包含依赖项。也可以将以下代码添加到pom.xml文件中来改变war文件的名称:

<build>
    <finalName>PromoteC</finalName>
 </build>               将本地的存储库放在一台web服务器上也同样是个便利之举,这样整个开发团队就能从此获益,每个人都没有必要去管理自己的存储库了。改变Maven的存储库路径只需简单地编辑其安装目录下conf文件夹下面的settings.xml文件即可。(详情见私服的架设)

5.文档编制
对于如何创建和编制文档,maven有一个简单的示例命令:

mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-site
 

执行了以上命令后,我们将得到一个目录结构:

你现在可以看到一个$basedir/src/site目录,以及它包含的一些站点描述文件(site.xml,site_fr_xml),和各种maven支持的文档格式相对应的目录和示例文档都已经产生。

以上的创建只是示例,我们自己创建时就没有命令行使用了,只能按照上面的目录结构创建我们需要的文档,创建完成后,运行mvn site。并在文档中写入我们工程的信息。

关于文档编制的详细说明,见参考资料。

6.依赖管理
一个简单的例子。比如我们要添加一个log4j到我们的工程中。首先.需要了解log4j的groupId, artifactId, and version信息。可在google上搜索“site:www.ibiblio.org maven2 log4j”。这样在搜索结果里可以找到/maven2/log4j/log4j (or /pub/packages/maven2/log4j/log4j)这样的目录,在这个目录中有一个文件叫做maven-metadata.xml。根据这个文件可以知道groupId为log4j,artifactId为log4j,version当然要用最新的。scope我们设置为compile。这样我们使用mvn compile 编译工程时,会看到mvn下载了log4j到我们的本地仓库。

 

7.配置存储库
要求项目的每个开发者必须在conf目录中配置存储库是不方便的,所以Maven可以同时查看多个存储库并且将它们全部配置在pom.xml文件中。让我们看看一个例子,它展示了如何在应用程序用使用多个存储库。在以下从pom.xml文件摘录的片断中,我们设置了两个存储库来让Maven寻找依赖项。Ibiblio一直是默认的存储库,我们又添加了Planet Mirror作为后援存储库。我们也可以让团队使用的本地web服务器作为第二个存储库。

 

<repositories>

    <repository>

      <id>Ibiblio</id>

      <name>Ibiblio</name>

      <url>http://www.ibiblio.org/maven/</url>           //此处按实际地址写,也有可能是//http://mirrors.ibiblio.org/pub/mirrors/maven2/org,看出错报告调整。对于找不到的jar包要写出他的真实路径。

    </repository>

    <repository>

      <id>PlanetMirror</id>

      <name>Planet Mirror</name>

      <url>http://public.planetmirror.com/pub/maven/</url>

    </repository>

</repositories>

 

当下载某些jar包时,会自动把相关依赖的包都下载下来。

如下面所示,会自动下载对应文件夹中pom.xml文件上所要求的包。

<dependency>

      <groupId>org.springframework</groupId>

      <artifactId>spring-jpa</artifactId>

      <version>2.0</version>

      <scope>test</scope>               //scope为compile时,在执行mvn package时,会将该包拷贝到target\{projectName}\WEB-INF\lib\目录下

    </dependency>

若在下载过程中出现java.net.SocketException: Connection reset错误,估计是该连接存在,但是下载不了。换别的网址或换个版本下载吧。若出现Failed to resolve artifact则估计是根本就不存在该连接。查看一下实际下载的地址是否存在。

Maven是基于中央仓库的编译,即把编译所需要的资源放在一个中央仓库里,如jar,tld,pom,等。当编译的时候,maven会自动在仓库中找到相应的包,如果本地仓库没有,则从设定好的远程仓库中下载到本地。这一切都是自动的,而ant需要自己定义了。这个好处导致的结果就是,用maven编译的项目在发布的时候只需要发布源码,小得很,而ant的发布则要把所有的包一起发布,显然maven又胜了一筹。

      编译时,出错的测试代码,只能显示到如下程度:

Running jp.co.benic.usp.webapp.action.USPJ320ActionTest

Tests run: 2, Failures: 0, Errors: 2, Skipped: 0, Time elapsed: 0.266 sec <<< FAILURE!

Running jp.co.benic.usp.webapp.action.USPJ510ActionTest

Tests run: 4, Failures: 0, Errors: 4, Skipped: 0, Time elapsed: 0.515 sec <<< FAILURE!

若想看完整的错误信息,需要到target\surefire-reports目录下,看相关的错误日志文件。

              对于在下载jar时,不想下载他所自带的依赖的某些包,可以用<dependency>

<exclusions>
                    <exclusion>
                        <groupId>dom4j</groupId>
                        <artifactId>dom4j</artifactId>
                    </exclusion>                   
                </exclusions>

</dependency>将指定的包过滤掉。

缺点:编译的过程没有日志输出。(手动设置?)

8.私服的架设
自己建个私服是不错的主意。其实也简单,随便拿台http服务器,把${user.home}/.m2/ 目录传上去就行了
     在pom文件中,把私服的http url写在官网的前面。  

 <repositories>
        <repository>
            <id>springside</id>
            <url>http://www.springside.org.cn/maven2</url>
        </repository>
        <repository>
            <id>maven</id>
            <name>slowly office site</name>
            <url>http://repo1.maven.org/maven2</url>
        </repository>
    </repositories>

9.如何部署jar到自己的远程repository
(但因为目前只支持scp这种远程拷贝方法,而不知道如何在windows中使用scp,顾此处没有实现)

在pom.xml中添加如下内容:

 

<distributionManagement>

    <repository>

      <id>mycompany-repository</id>

      <name>MyCompany Repository</name>

      <url>scp://repository.mycompany.com/repository/maven2</url>

    </repository>

  </distributionManagement>

 

 

同样在用户的settings.xml中也要定义服务器:

 

<settings>

  <servers>

    <server>

      <id>mycompany-repository</id>

      <username>jvanzyl</username>

      <!-- Default value is ~/.ssh/id_dsa -->

      <privateKey>/path/to/identity</privateKey> (default is ~/.ssh/id_dsa)

      <passphrase>my_key_passphrase</passphrase>

    </server>

  </servers>

</settings>

http://maven.apache.org/plugins/maven-deploy-plugin/index.html

deploy的介绍。deploy:deploy-file从远程仓库安装一个资源;deploy:deploy部署一个资源到远库。程仓

http://maven.apache.org/plugins/index.html   介绍maven的有效的插件及每个命令都是用来做什么的。

10.如何使用Maven2打包你的Web应用程序?
解决方法:

      pom.xml的设置:

             打包类型设置为“war”:

             <packaging>war</packaging>

             如果项目的layout不是Maven2默认的,可通过修改plugin的配置进行设置,例如WebRoot路径的设置如下:

             <build>

                 <!-- war包名称 -->

                 <finalName>mywebapp</finalName>

                 <plugins>

                     <plugin>

                         <groupId>org.apache.maven.plugins</groupId>

                         <artifactId>maven-war-plugin</artifactId>

                         <configuration>

                             <!-- 设置WebContent目录为Web目录 -->

                             <warSourceDirectory>WebContent</warSourceDirectory>

                         </configuration>

                     </plugin>

                 </plugins>

             </build>

 

打包命令行:mvn clean:clean package

 

使用maven2打包时,可以过滤掉不想被打包的文件或文件夹。只要在pom.xml文件中做如下设置即可

<build>

    <filters>

      <filter>src/main/filters/filter.properties</filter>

    </filters>

    <resources>

      <resource>

        <directory>src/main/resources</directory>

        <filtering>true</filtering>

      </resource>

    </resources>

  </build>

11.Maven和eclipse工具的合作
当有了以上的工程目录,无论是webapp工程,还是app,我们都希望在集成开发环境中开发。Maven如何和IDE集成。现在我们就来进行讲解。

11.1首先要让eclipse知道Maven 2的repository(仓库)的路径
因此要设置一个M2_REPO的变量为classpath。

可以使用命令行的方式来设置:

mvn -Declipse.workspace=<path-to-eclipse-workspace> eclipse:add-maven-repo
 

还可以在eclipse中定义一个新的classpath变量通过在eclipse的菜单上选择Window> Preferences. 选择Java > Build Path > Classpath Variables page.

11.2生成eclipse的工程文件。
使用命令行

mvn eclipse:eclipse
 

这样通过在eclipse的菜单上选择File >Import >Existing Projects into Workspace,就可以将工程导入eclipse中。

 

通过以上2个步骤,我们就可以利用eclipse来进行开发工作了。

11.3Eclipse插件mavenide
同时在eclipse中我们可以下载一个maven的插件,用来辅助eclipse进行maven工程的开发工作。这个插件名称叫做mavenide。

这个插件可使用以下更新站点:http://m2eclipse.codehaus.org/

并且非常方便的是,这里还提供了一个flash的演示来介绍如何安装此插件,这个flash演示的观看地址在:

http://m2eclipse.codehaus.org/Installing_Maven_2.0_plugin_for_Eclipse.html

要正常使用此插件请注意以下问题:

eclipse使用3.1或以上版本。

Mavenide的插件为0.0.5不要安装错误了。

通过笔者在安装好此插件的一些使用后,看到了此插件的以下一些特性。

1.可以方便的添加依赖。

2.在编辑完pom.xml文档后,会自动检查此文档的格式是否正确。

3.可以将mvn的一些命令通过扩展工具的方式在eclipse中轻松执行。

12.在ANT中使用Maven2
Maven 2.0 中的Ant任务可以利用Maven中的artifact来处理Ant中的功能。

这些包括:

依赖管理-包括传递依赖,范围识别和SNAPSHOT处理;

Artifact部署-基于文件和SSH的部署;

POM处理-读取Maven 2.0的pom.xml文件。

12.1安装Antlib
把jar包放在%ANT_HOME%的lib目录下面,添加在CLASSPATH中,或是使用-lib命令行参数。

在ant文件的起始添加命名空间:

<project ... xmlns:artifact="antlib:org.apache.maven.artifact.ant">

12.2声明typedef
使用typedef可以把库放在任何位置,并把它的位置放在build文件中。这可以用来在启动的时候获取库,然后在构建脚本中引用它。

下面这个例子中,假设库放在lib目录下面。

 

<project ... xmlns:artifact="urn:maven-artifact-ant">

  <typedef resource="org/apache/maven/artifact/ant/antlib.xml" uri="urn:maven-artifact-ant">

    <classpath>

      <pathelement location="lib/maven-artifact-ant-2.0-beta-1.jar" />

    </classpath>

  </typedef>

12.3声明依赖
通过dependencies任务来声明依赖。

最简单的用法是直接声明:

<artifact:dependencies pathId="dependency.classpath">

  <dependency groupId="org.apache.maven.wagon" artifactId="wagon-provider-test"

              version="1.0-alpha-2"/>

  <dependency groupId="org.codehaus.modello" artifactId="modello-core"

              version="1.0-alpha-2-SNAPSHOT"/>

  <dependency groupId="javax.servlet" artifactId="servlet-api"

              version="2.4" scope="provided" />

</artifact:dependencies>

 

注意其中的pathId引用,可以用来在其他地方引用。

<javac ...>

  <classpath refid="dependency.classpath" />

  ...

</javac>

另外一个是filesetId,,可以用来拷贝文件到某个特定位置。<dependencies filesetId="dependency.fileset" useScope="runtime">

  ...

</dependencies>

<copy todir="${webapp.output}/WEB-INF/lib">

  <fileset refid="dependency.fileset" />

  <mapper type="flatten" />

</copy>

12.4声明Repositories
所有的任务都可以接受一个或多个远程repositories来下载或是上传,以及一个本地repository来存储下载的文件和安装包。

这些可以直接书写(inline),也可以通过id/refid来重用。

<artifact:remoteRepository id="remote.repository" url="http://repository.mycompany.com/" />

...

<artifact:dependencies>

  ...

  <remoteRepository refid="remote.repository" />

</artifact:dependencies>

如果repository需要认证,可以提供一个嵌套元素:

<authentication username="brett" privateKey="${user.home}/.ssh/id_dsa" />

12.5安装和部署你自己的artifacts
如果需要在不同的项目之间共享artifacts,可以通过install把它们放在本地的repository以供其他脚本访问,或是通过deploy部署到远程位置。(这部分测试没通过,部署到本地仓库没问题,但部署到远程仓库不好用)

 

安装和部署的时候需要POM文件。

<artifact:pom id="maven.project" file="pom.xml" />

  <artifact:install file="target/maven-artifact-ant-2.0-alpha-3.jar">

    <pom refid="maven.project"/>

  </artifact:install>

  <artifact:deploy file="target/maven-artifact-ant-2.0-alpha-3.jar">

    <remoteRepository url="file://localhost/www/repository"/>

    <pom refid="maven.project"/>

  </artifact:deploy>

 

通过协议而不是本地文件系统部署的话,需要注册其他协议的provider。

 

<artifact:install-provider artifactId="wagon-ssh" version="1.0-alpha-5"/> 

  <artifact:deploy file="target/maven-artifact-ant-2.0-alpha-3.jar">

    <remoteRepository url="scp://localhost/www/repository">

      <authentication username="${repository.username}" privateKey="${user.home}/.ssh/id_dsa"/>

    </remoteRepository>

    <pom refid="maven.project"/>

  </artifact:deploy>

 

12.6使用Maven POM文件
可以在POM中直接定义依赖。

为了把POM作为Ant的属性来访问,需要把它定义为引用。

<artifact:pom id="maven.project" file="pom.xml" />

 

  <echo>The version is ${maven.project.version}</echo>

  <artifact:pom id="project" file="pom.xml" />

 

  <echo>The version is ${project.build.directory}</echo>

用户的配置文件settings.xml同样可以引用。

13.在Maven2中使用ANT
传说是这样的:

http://maven.apache.org/guides/mini/guide-using-ant.html

具体没有试过。

参考资料
Maven入门--概念与实例

http://www.blogjava.net/jiangshachina/archive/2006/09/01/67080.aspx

 

Maven2的官方文档

http://maven.apache.org/guides/getting-started/index.html#How%20do%20I%20deploy%20my%20site?

 

maven和ant的比较

http://xiaozhou.iteye.com/blog/23287

 

maven2的pom.xml文件的详细说明。

 http://maven.apache.org/pom.html#The%20Super%20POM

 

maven2的pom.xml文件各元素的详细说明。

http://maven.apache.org/ref/current/maven-model/maven.html#class_scm

 

maven2的命令详解。

http://maven.apache.org/plugins/

 

有效利用Maven2的站点生成功能 -- Step by Step

http://www.matrix.org.cn/resource/article/44/44491_Maven2.html

 

分享到:
评论
1 楼 huajz 2009-11-30  

相关推荐

    maven搭建使用详解

    Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理...由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。

    apache-maven-3.8.5

    由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。 Maven这个单词来自于意第绪语(犹太语),意为知识的积累,最初在Jakata Turbine项目中用来...

    Maven视频教程

    (永久资源链接 失效+Q:86848958 补发) Maven教程,通过一小段描述信息来管理项目的构建,...由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。

    maven配置文件

    Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理...由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。

    apache-maven-3.6.zip

    由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。 Maven这个单词来自于意第绪语(犹太语),意为知识的积累,最初在Jakata Turbine项目中用来...

    maven 3.8.8 解压安装版

    由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。 Maven这个单词来自于意第绪语(犹太语),意为知识的积累,最初在Jakata Turbine项目中用来...

    maven3.2.3

    Maven3.2.3版本:Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和...由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。

    Apache-maven-3.5.2

    Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具...由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。

    apache-maven-3.5.4

    Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理...由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。

    apache-maven-3.2.5-src.zip

    Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件...由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。

    MAVEN 快速教程.pdf

    由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。 Maven这个单词来自于意第绪语(犹太语),意为知识的积累,最初在Jakata Turbine项目中用来...

    maven配置.pdf

    由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而 且公司项目采用 Maven 的比例在持续增长。 Maven 这个单词来自于意第绪语(犹太语),意为知识的积累,最初在 Jakata Turbine 项目中...

    apache-maven-3.5.4.zip

    由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。 Maven这个单词来自于意第绪语(犹太语),意为知识的积累,最初在Jakata Turbine项目中用来...

    apache-maven-3.5.2

    Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理...由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长

    apache-maven-3.3.9.rar

    项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件 ...由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长

    apache-maven-3.5.0.zip

    由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。 Maven这个单词来自于意第绪语(犹太语),意为知识的积累,最初在Jakata Turbine项目中用来...

    apache-maven-3.3.9.zip

    Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理...由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。

    maven3.5.4 搭建Maven框架

    Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理...由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。

    apache-maven-3.6.2.rar

    由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。 Maven这个单词来自于意第绪语(犹太语),意为知识的积累,最初在Jakata Turbine项目中用来...

Global site tag (gtag.js) - Google Analytics