unbunto 下能否加载ubuntu maven3.demo. start. app

maven学习笔记_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
maven学习笔记
介​绍​m​a​v​e​n​的​作​用​,​以​及​如​何​使​用​m​a​v​e​n​搭​建​项​目
阅读已结束,如果下载本文需要使用
想免费下载本文?
你可能喜欢目前主要的java webservice框架剩下了axis2和cxf。本文对两个框架的目标、标准支持、开发和部署等方面进行了简单的对比。对于在现有web应用中发布webservice,本文建议使用cxf。 更进一步,本文介绍了cxf的嵌入式代码和web容器两种发布方式。
本文中的例子使用maven进行构建。
Table of Contents
1 对比Axis2和CXF
2 编写服务类
3 以endpoint发布
4 在webapp中发布
1 对比Axis2和CXF
jws的发布对java webservice框架产生了巨大的影响,经过大浪淘沙,目前java开发webservice的框架主要包括axis2和cxf。
axis2和cxf都是apache旗下的产品,但是其目的不同,导致webservice开发方法也不一样。两个框架都得到了开发者的支持。有必要对二者进行以下对比。
WebService引擎
简易的SOA框架,可以作为ESB
ws* 标准支持
不支持WS-Policy
WS-Addressing,WS-Policy, WS-RM, WS-Security,WS-I Basic Profile
数据绑定支持
XMLBeans、JiBX、JaxMe 、JaxBRI、ADB
JAXB, Aegis, XMLBeans, SDO, JiBX
spring集成
服务监控和管理
如果希望以一种一致的方式实现webservice,特别是有跨语言的需求时,应该使用Axis2
如果需要在现有的java程序(包括web应用)中增加webservice支持,应该使用CXF
2 编写服务类
从Java6开始,WebService API从Java EE复制到了Java SE。并遵循了一系列的标准,比如JSR181(Web Service 元数据),JSR224(JAX-WS,基于XML的WebService API),JSR67(SAAJ,SOAP附件标准)等。 并分别定义到javax.jws, javax.xml.ws 和 javax.xml.soap包中。
JSR181支持使用标注(annotation)来定义WebService。在javax.jws中主要的标注类包括:
WebService
将 Java 类标记为实现 Web Service,或者将 Java 接口标记为定义 Web Service 接口
定制Web Service方法
定制Web Service方法的参数
定制Web Service方法的返回值
SOAPBinding
指定WebService的SOAP映射样式
使用标注可以在不改变代码逻辑的前提下让外部代码能够获得更多的元数据。下面就用javax.jws定义的标注来声明一个WebService:
创建maven工程
mvn archetype:create -DgroupId=com.mycompany -DartifactId=cxfdemo -DarchetypeArtifactId=maven-archetype-webapp
增加CXF依赖
&dependency&
&groupId&org.apache.cxf&/groupId&
&artifactId&apache-cxf&/artifactId&
&version&${cxf.version}&/version&
&type&pom&/type&
&/dependency&
&配置jetty插件
&groupId&org.mortbay.jetty&/groupId&
&artifactId&maven-jetty-plugin&/artifactId&
&/plugins&
创建服务接口
import javax.jws.WebS
@WebService
public interface CXFDemo {
public String sayHello(String foo);
实现服务类
import javax.jws.WebS
@WebService()
public class CXFDemoImpl implements CXFDemo {
public String sayHello(String foo) {
return "hello "+
3 以endpoint发布
到目前为止,使用的都是标准Java SE中的东西。下面要开始依赖CXF实现一些功能。
首先是服务的发布。CXF不仅支持通过Web容器发布WebService,也可以在嵌入式代码中通过jetty发布WebService。
下面的测试类包含了发布服务和客户端调用的代码:
package cxfdemo.
import javax.xml.ws.E
import junit.framework.A
import junit.framework.TestC
import org.apache.cxf.jaxws.JaxWsProxyFactoryB
import cxfdemo.CXFD
import cxfdemo.CXFDemoI
public class TestEndpoint extends TestCase {
private static final String ADDRESS = "http://localhost:9000/cxfdemo";
protected void setUp() throws Exception {
super.setUp();
System.out.println("Starting Server");
CXFDemoImpl demo = new CXFDemoImpl();
Endpoint.publish(ADDRESS, demo);
System.out.println("Start success");
public void testSayHello(){
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(CXFDemo.class);
factory.setAddress(ADDRESS);
CXFDemo client = (CXFDemo)factory.create();
Assert.assertEquals(client.sayHello("foo"), "hello foo");
运行测试结果如下:
-------------------------------------------------------
-------------------------------------------------------
Running cxfdemo.test.TestEndpoint
Starting Server
2012-12-12 11:29:02 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
???: Creating Service {http://cxfdemo/}CXFDemoImplService from class cxfdemo.CXFDemo
2012-12-12 11:29:03 org.apache.cxf.endpoint.ServerImpl initDestination
???: Setting the server's publish address to be http://localhost:9000/cxfdemo
2012-12-12 11:29:04 org.eclipse.jetty.util.log.Slf4jLog info
???: jetty-7.4.2.v
2012-12-12 11:29:04 org.eclipse.jetty.util.log.Slf4jLog info
???: Started SelectChannelConnector@localhost:9000 STARTING
2012-12-12 11:29:04 org.eclipse.jetty.util.log.Slf4jLog info
???: started o.e.j.s.h.ContextHandler{,null}
Start success
2012-12-12 11:29:04 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
???: Creating Service {http://cxfdemo/}CXFDemoService from class cxfdemo.CXFDemo
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.076 sec
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
4 在webapp中发布
CXF提供了spring的集成,同时还提供了org.apache.cxf.transport.servlet.CXFServlet用于在web容器中发布WebService。 前面的例子中增加了整个apache-cxf的依赖,所以会自动增加对srping的引用。只需要写beans配置文件和web.xml文件即可。
在web.xml中配置CXFServlet
&servlet-name&CXFServlet&/servlet-name&
&servlet-class&org.apache.cxf.transport.servlet.CXFServlet&/servlet-class&
&/servlet&
&servlet-mapping&
&servlet-name&CXFServlet&/servlet-name&
&url-pattern&/services/*&/url-pattern&
&/servlet-mapping&
在web.xml中增加spring的ContextLoaderListener并配置context-param
&context-param&
&param-name&contextConfigLocation&/param-name&
&param-value&/WEB-INF/cxfdemo-beans.xml&/param-value&
&/context-param&
&listener&
&listener-class&org.springframework.web.context.ContextLoaderListener&/listener-class&
&/listener&
beans配置文件内容如下
cxfdemo-beans.xml
&?xml version="1.0" encoding="UTF-8"?&
&beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"
&jaxws:endpoint id="cxfDemo" implementor="cxfdemo.CXFDemoImpl" address="/cxfdemo" /&
如此,WebService就已经在web容器中发布了。启动web应用:
$mvn jetty:run
就可以在浏览器中看到已经发布的WebService,如下图:
Author: Holbrook
Org version 7.8.11 with Emacs version 24
阅读(...) 评论()Maven入门--概念与实例
&&& 最近由于工作原因在研究、应用Maven,有了一些体会就写成了此文。本文虽然是Maven2的入门文章,但并不涉及Maven的历史、下载与安装,这些内容可以到Maven的官方网站上了解。本文主要是关注Maven中的重要概念,并以一个实例来阐述使用Maven的基本方法。文末有例子代码下载的链接。(最后更新)
注:转载时请注明原作者(jiangshachina)及出处()!
1 关键名词
&&& Project:任何您想build的事物,Maven都可以认为它们是工程。这些工程被定义为工程对象模型(POM,Poject Object Model)。一个工程可以依赖其它的工程;一个工程也可以由多个子工程构成。
&&& POM:POM(pom.xml)是Maven的核心文件,它是指示Maven如何工作的元数据文件,类似于Ant中的build.xml文件。POM文件位于每个工程的根目录中。
&&& GroupId:groupId是一个工程的在全局中唯一的标识符,一般地,它就是工程名。groupId有利于使用一个完全的包名,将一个工程从其它有类似名称的工程里区别出来。
&&& Artifact:artifact是工程将要产生或需要使用的文件,它可以是jar文件,源文件,二进制文件,war文件,甚至是pom文件。每个artifact都由groupId和artifactId组合的标识符唯一识别。需要被使用(依赖)的artifact都要放在仓库(见Repository)中,否则Maven无法找到(识别)它们。
&&& Dependency:为了能够build或运行,一个典型的Java工程会依赖其它的包。在Maven中,这些被依赖的包就被称为dependency。dependency一般是其它工程的artifact。
&&& Plug-in:Maven是由插件组织的,它的每一个功能都是由插件提供的。插件提供goal(类似于Ant中的target),并根据在POM中找到的元数据去完成工作。主要的Maven插件要是由Java写成的,但它也支持用Beanshell或Ant脚本写成的插件。
&&& Repository:仓库用于存放artifact,它可以是本地仓库,也可以是远程仓库。Maven有一个默认的远程仓库--central,可以从http://www.ibiblio.org/maven2/下载其中的artifact。在Windows平台上,本地仓库的默认地址是User_Home\.m2\repository。
&&& Snapshot:工程中可以(也应该)有一个特殊版本,它的版本号包括SNAPSHOT字样。该版本可以告诉Maven,该工程正处于开发阶段,会经常更新(但还未发布)。当其它工程使用此类型版本的artifact时,Maven会在仓库中寻找该artifact的最新版本,并自动下载、使用该最新版。
2 Maven Build Life Cycle
&&& 软件项目一般都有相似的开发过程:准备,编译,测试,打包和部署,Maven将上述过程称为Build Life Cycle。在Maven中,这些生命周期由一系列的短语组成,每个短语对应着一个(或多个)操作;或对应着一个(或多个)goal(类似于Ant中的target)。
&&& 如编译源文件的命令mvn compile中的compile是一个生命周期短语。同时该命令也可以等价于mvn compiler:compile,其中的compiler是一个插件,它提供了compile(此compile与mvn compile中的compile意义不同)goal;compiler还可提供另一个goal--testCompile,该goal用于编译junit测试类。
&&& 在执行某一个生命周期时,Maven会首先执行该生命周期之前的其它周期。如要执行compile,那么将首先执行validate,generate-source,process-source和generate-resources,最后再执行compile本身。关于Maven中默认的生命周期短语,请见参考资源[6]中的附录B.3。
3 标准目录布局
&&& Maven为工程中的源文件,资源文件,配置文件,生成的输出和文档都制定了一个标准的目录结构。Maven鼓励使用标准目录布局,这样就不需要进行额外的配置,而且有助于各个不同工程之间的联接。当然,Maven也允许定制个性的目录布局,这就需要进行更多的配置。关于Maven的标准目录布局,请见参考资源[6]中的附录B.1。
4 Maven的优点
&&& [1]build逻辑可以被重用。在Ant中可能需要多次重复地写相同的语句,但由于POM的继承性,可以复用其它的POM文件中的语句。这样既可以写出清晰的build语句,又可以构造出层次关系良好的build工程。
&&& [2]不必关注build工作的实现细节。我们只需要使用一些build生命周期短语就可以达到我们的目标,而不必管Maven是如何做到这些的。如,只需要告诉Maven要安装(install),那么它自然就会验证,编译,打包,及安装。
&&& [3]Maven会自动加载工程依赖的artifact所依赖的其它artifact(Transitive Dependency),而不用显示的将这些artifact全部写到dependency中。
&&& [4]如果完全使用Maven的标准目录布局,那么可以极大地减少配置细节。
&&& 由于只是阐述Maven的基本使用方法,所以本文将要设计的实例,只是一个简单的Maven demo。该实例包含两个工程:普通应用程序工程(app)和Web应用工程(webapp)。app工程提供一个简单的Java类;webapp工程只包含一个Servlet,并将使用app中的Java类。
&&& 该Demo的目标是能够正确地将webapp制成war包,以供部署时使用。要能够正确制作war,自然首先就必须要能够正确的编译源代码,且要将App模块制成jar包。本文创建的工程所在的目录是D:\maven\demo。
5.2 App工程
&&& 可以使用Maven的archetype插件来创建新工程,命令如下:
&&& D:\maven\demo&mvn archetype:create -DgroupId=ce.demo.mvn -DartifactId=app
该工程的groupId是ce.demo.mvn,那么该工程的源文件将放在Java包ce.demo.mvn中。artifactId是app,那么该工程根目录的名称将为app。
&&& 当第一次执行该命令时,Maven会从central仓库中下载一些文件。这些文件包含插件archetype,以及它所依赖的其它包。该命令执行完毕后,在目录D:\maven\demo下会出现如下目录布局:
|--&pom.xml
&&&&|--&main
&&&&|&&&`--&java
&&&&|&&&&&&&`--&ce
&&&&|&&&&&&&&&&&`--&demo
&&&&|&&&&&&&&&&&&&&&`--&mvn
&&&&|&&&&&&&&&&&&&&&&&&&`--&App.java
&&&&`--&test
&&&&&&&&`--&java
&&&&&&&&&&&&`--&ce
&&&&&&&&&&&&&&&&`--&demo
&&&&&&&&&&&&&&&&&&&&`--&mvn
&&&&&&&&&&&&&&&&&&&&&&&&`--&AppTest.java
因本文暂时不涉及JUnit测试,故请将目录app\src\test目录删除(不删除也没关系 ^_^)。然后再修改App.java文件,其完全内容如下:
package&ce.demo.
public&class&App&{
&&&&public&String&getStr(String&str)&{
&&&&&&&&return&
其实,如果我们能够清楚地知道Maven的标准目录布局,就可以不使用archetype插件来创建工程原型;如果我们要定制个性的目录布局,那么就更没有必要使用archetype插件了。
5.3 WebApp工程
&&& 我们仍然如创建app工程一样使用archetype插件来创建webapp工程,命令如下:
&&& D:\maven\demo&mvn archetype:create -DgroupId=ce.demo.mvn -DartifactId=webapp -DarchetypeArtifactId=maven-archetype-webapp
&&& 第一次运行此命令时,也会从central仓库中下载一些与Web应用相关的artifact(如javax.servlet)。此命令与创建app的命令的不同之处是,多设置了一个属性archetypeArtifacttId,该属性的值为maven-archetype-webapp。即告诉Maven,将要创建的工程是一个Web应用工程。创建app工程时没有使用该属性值,是由于archetype默认创建的是应用程序工程。同样的,执行完该命令之后,会出现如下标准目录布局:
|--&pom.xml
&&&&`--&main
&&&&&&&&`--&webapp
&&&&&&&&&&& |--&index.jsp
&&&&&&&&&&& |--&WEB-INF
&&&&&&&&&&&&& & `--&web.xml
&&& 根据5.1节的构想,webapp工程将只包含一个Servlet,所以我们不需要index.jsp文件,请将其删除。此时大家可以发现,目前的目录布局中并没有放Servlet,即Java源文件的地方。根据参考资源[6]中的附录B.1,以及app工程中Java源文件的布局,可以知道Servlet(它仍然是一个Java类文件)仍然是放在webapp\src\main\java目录中,请新建该目录。此处的Servlet是一个简单HelloServlet,其完整代码如下:
import&java.io.IOE
import&java.io.PrintW
import&javax.servlet.ServletE
import&javax.servlet.http.HttpS
import&javax.servlet.http.HttpServletR
import&javax.servlet.http.HttpServletR
import&ce.demo.mvn.A&&//&引用app工程中的App类
public&class&HelloServlet&extends&HttpServlet&{
&&&&private&static&final&long&serialVersionUID&=&-0528247L;
&&&&public&void&doGet(HttpServletRequest&request,&HttpServletResponse&response)
&&&&&&&&&&&&throws&ServletException,&IOException&{
&&&&&&&&App&app&=&new&App();
&&&&&&&&String&str&=&app.getStr("CE&Maven&Demo");
&&&&&&&&PrintWriter&out&=&response.getWriter();
&&&&&&&&out.print("&html&&body&");
&&&&&&&&out.print("&h1&"&+&str);
&&&&&&&&out.print("&/body&&/html&");
5.4 POM文件
&&& 大家可以发现,在前面新建工程时,我们并没有提到各个工程中的pom.xml文件。现在将要讨论这个问题。我们先看看app工程中的POM文件,其完整内容如下:
&&&modelVersion&4.0.0&/modelVersion&
&&&groupId&ce.demo.mvn&/groupId&
&&&artifactId&app&/artifactId&
&&&packaging&jar&/packaging&
&&&version&1.0&/version&
&&&name&CE&Maven&Demo&--&App&/name&
&/project&
&&& 大家可以发现此我帖出来的内容与实际由archetype插件生成的POM文件的内容有些不同,但基本上是一致的。只是为了使文件中的语句更清晰,此处删除了一些冗余的内容,并修改了该工程的version和name的值,以与此例子的背景来符合。在目前情况下modelVersion值将被固定为4.0.0,这也是Maven2唯一能够识别的model版本。groupId,artifactId的值与创建工程时使用的命令中的相关属性值是一致的。packaging的值由工程的类型决定,如应用程序工程的packaging值为jar,Web应用工程的packaging值为war。上述情况也可以从webapp的POM文件中看出,下面将看看这个pom的完整内容。
&&&modelVersion&4.0.0&/modelVersion&
&&&groupId&ce.demo.mvn&/groupId&
&&&artifactId&webapp&/artifactId&
&&&packaging&war&/packaging&
&&&version&1.0&/version&
&&&name&CE&Maven&Demo&--&WebApp&/name&
&&&dependencies&
&&&&&&&dependency&
&&&&&&&&&&&groupId&ce.demo.mvn&/groupId&
&&&&&&&&&&&artifactId&app&/artifactId&
&&&&&&&&&&&version&1.0&/version&
&&&&&&&/dependency&
&&&&&dependency&
&&&&&&&&&groupId&javax.servlet&/groupId&
&&&&&&&&&artifactId&servlet-api&/artifactId&
&&&&&&&&&version&2.4&/version&
&&&&&&&&&scope&provided&/scope&
&&&&&/dependency&&
&&&/dependencies&
&/project&
&&& 比较app与webapp中的POM,除前面已经提过的packaging的差别外,我们还可以发现webapp中的POM多了dependencies项。由于webapp需要用到app工程中的类(见HelloServlet源代码),它还需要javax.servlet包(因为该包并不默认存在于jsdk中)。故,我们必须要将它们声明到依赖关系中。
&&& 上述两个工程创建完毕后,就需要执行一些命令来看看会有什么结果出现。我们首先进入app目录,并执行命令mvn compile,然后会在该目录下发现新生成的目录target\classes,即编译后的class文件(包括它的包目录)就放在了这里。再执行命令mvn package,在目录target中就会生成app-1.0.jar文件。该文件的全名由如下形式确定:artifactId-version.packaging。根据第2章的叙述可以知道,执行命令mvn package时,将首先将产生执行命令mvn compile之后的结果,故如果要打包,那么只需要执行mvn package即可。
&&& 在app工程中执行完之后,就需要进入webapp工程了。进入webapp目录,此次将只执行mvn package命令(隐示地执行了compile过程)。此次命令的执行并不成功,会出现如下问题:
D:\maven\demo\webapp&mvn&package
……
Downloading:&http://repo1.maven.org/maven2/ce/demo/mvn/app/1.0/app-1.0.pom
[INFO]&------------------------------------------------------------------------
[ERROR]&BUILD&ERROR
[INFO]&------------------------------------------------------------------------
[INFO]&Error&building&POM&(may&not&be&this&project's&POM).
Project&ID:&ce.demo.mvn:app
Reason:&Error&getting&POM&for&'ce.demo.mvn:app'&from&the&repository:&Error&transferring&file
&&ce.demo.mvn:app:pom:1.0
from&the&specified&remote&repositories:
&&central&(http://repo1.maven.org/maven2)
……
&&& 由粗体内容可知,Maven正试图从central仓库下载app工程的artifact,但central仓库肯定不会有这个artifact,其结果只能是执行失败!由第1章artifact名词的解释可知,被依赖的artifact必须存在于仓库(远程或本地)中,但目前webapp所依赖的app必不存在于仓库中,所以执行只能失败。
&&& 解决这个问题有两种方法:[1]将app-1.0.jar安装到仓库中,使它成为一个artifact;[2]构建一个更高层次的工程,使app和webapp成为这个工程的子工程,然后从这个更高层次工程中执行命令。
&&& 第一种方法比较简单(见http://www.blogjava.net/jiangshachina/admin/EditPosts.aspx中的第一个主题),此处将详细讨论第2种方法(见5.6节)。
5.6 更高层次工程
&&& 我们可以将app和webapp的上一级目录demo作为这两个工程的 一个 更高层次工程,即使用app和webapp成为这个工程的子工程。为了使demo目录成为一个demo工程,只需要在这个目录下添加一个pom.xml文件,该文件内容如下:
&&&&&modelVersion&4.0.0&/modelVersion&
&&&&&groupId&ce.demo&/groupId&
&&&&&artifactId&mvn-demo&/artifactId&
&&&&&packaging&pom&/packaging&
&&&&&version&1.0&/version&
&&&&&name&CE&Maven&Demo&/name&
&&&&&modules&
&&&&&&&&&module&app&/module&
&&&&&&&&&module&webapp&/module&
&&&&&/modules&
&/project&
&&& 与app和webapp中的POM相比,demo的POM使用了modules项,modules用于声明本工程的子工程,module中的值对应于子工程的artifact名。而且该POM的packaging类型必须为pom。
&&& 有了demo工程后,我们只需要在demo目录下执行相关命令就可以了。通过如下命令即可验证:
&&& [1]mvn clean – 消除工程(包括所有子工程)中产生的所有输出。这本文的实例中,实际上是删除target目录。由于之前的操作只有app工程产生了target目录,而webapp并没有,所以将只会删除app工程中的target目录。
&&& [2]mvn package – 将工程制作成相应的包,app工程是作成jar包(app-1.0.jar),webapp工程是作成war包(webapp-1.0.war)。打开webapp-1.0.war包,可以发现app-1.0.jar被放到了WEB-INF的lib目录中。
&&& 通过以上的叙述与实例,应该可以对Maven有一个粗略的认识了。使用Maven关键是要弄清楚如何写pom.xml文件,就如同使用Ant要会写build.xml文件一样。在POM中可以直接写入Ant的task脚本,也可以调用Ant的build.xml文件(推荐),所以Maven也可以完成Ant的绝大多数工作(但不必安装Ant)。注意:使用Maven就不要再过多的使用Ant脚本。
&&& 利用好Maven的继承特性及子工程的关系,可以很好地简化POM文件,并能够构建层次结构良好的工程,有利于工程的维护。
7 参考资源
[1]Maven官方网站. http://maven.apache.org
[2]Maven POM文件参考结构. http://maven.apache.org/ref/current/maven-model/maven.html
[3]Super POM. http://maven.apache.org/guides/introduction/introduction-to-the-pom.html
[4]Maven主要插件的列表. http://maven.apache.org/plugins
[5]Maven基本使用指南. http://maven.apache.org/guides/index.html
[6]Better Build with Maven. /m2book_download.jsp -- 强烈推荐
[7]介绍Maven2. /javaworld/jw-12-2005 /jw-1205-maven_p.html
[8]揭秘Maven2 POM. /javaworld/jw-05-2006/jw-0529-maven.html
[9]Maven让事情变得简单. http://www-/developerworks/cn/java/j-maven
[10]Maven文档集. http://docs.codehaus.org/display/MAVENUSER/Home
[11]有效利用Maven2的站点生成功能. http://www./resource/article/44/44491_Maven2.html
文中例子程序下载:
请关注本人的另一篇关于Maven的文章--
辛苦了,收益非浅,如果结合eclipse 生成工程并结合svn说明一下开发人员和管理人员如何使用mvn,就更有助于实际工作了,期待! &&&&
&re: Maven入门--概念与实例
生成Eclipse工程:mvn eclipse:eclipse
与SCM(CVS,SVN...)的结合也比较容易,一般只需要设置scm这个元素就可以了。请参见:
然后再使用maven-scm-plugin
就可以做checkout等等工作了。
最近在写一篇关于Maven的较复杂应用实例的文章,文中会尽量多使用一些插件及其设置,敬请关注 ^_^&&&&
&re: Maven入门--概念与实例
刚刚在IBM的developerWorks中看到一篇介绍Maven2的好文章,不敢独享 ^_^
不过,需要首先注册才能阅读全文。&&&&
&re: Maven入门--概念与实例
届时发布Web工程时定来细读.&&&&
&re: Maven入门--概念与实例
谢谢!希望能有所帮助 :)&&&&
&re: Maven入门--概念与实例(原)
请问一下:若是我想运行用maven生成的项目中的某个带main()的类,该用什么命令来运行,谢谢!&&&&
&re: Maven入门--概念与实例(原)[未登录]
老大,写得不错。收藏一下。&&&&
&re: Maven入门--概念与实例(原)
& 请问一下:若是我想运行用maven生成的项目中的某个带main()的类,& 该用什么命令来运行,谢谢!我没有试过,也许可以用Ant来做。&&&&
&re: Maven入门--概念与实例(原)
我按照作者说的做了但最后运行 mvn package的时候还是不成功,报Missing:-----------------ce.demo.mvn:app:jar:1.0是什么原因啊,请指点一下!谢谢&&&&
&re: Maven入门--概念与实例(原)[未登录]
感谢作者,,,,楼上是不是进入的目录不正确啊,应该在demo目录运行mvn package,而不能在webapp目录。。继续学习中。。&&&&
&re: Maven入门--概念与实例(原)
& 应该在demo目录运行mvn package,而不能在webapp目录如果是这样的话,应该会报找不到POM文件,除非再特别地指定POM的路径。&&&&
&re: Maven入门--概念与实例(原)
& & 应该在demo目录运行mvn package,而不能在webapp目录& 如果是这样的话,应该会报找不到POM文件,除非再特别地指定POM的路径。我想错了。时间太长,有些东西也忘了 :-D&&&&
&re: Maven入门--概念与实例(原)
好文章&&&&
&re: Maven入门--概念与实例(原)
Cool ^_^P.S. Happy Lunar New Year!&&&&
&re: Maven入门--概念与实例(原)
谢谢,帮了挺大的忙,谢谢.......&&&&
&re: Maven入门--概念与实例(原)
正在项目中用到这个,谢谢&&&&
&re: Maven入门--概念与实例(原)
很长时间不用了,都有些忘了;-(&&&&
&re: Maven入门--概念与实例(原)
我是进来学习的,呵呵&&&&
&re: Maven入门--概念与实例(原)
Rosen兄,好久不联系了*_*&&&&
&re: Maven入门--概念与实例(原)
6]Better Build with Maven.
-- 强烈推荐
这个资源需要账户信息,能提供个否&&&&
&re: Maven入门--概念与实例(原)
文中的例子没有问题,搞这个关键是要搞清楚文件路径关系&&&&
&re: Maven入门--概念与实例(原)
package命令出现以下情况
[WARNING] The POM for org.apache.maven.plugins:maven-surefire-plugin:jar:2.7.2
s invalid, transitive dependencies (if any) will not be available, enable debug
logging for more details
[ERROR] Failed to parse plugin descriptor for org.apache.maven.plugins:maven-su
efire-plugin:2.7.2 (C:\Documents and Settings\Administrator\.m2\repository\org\
pache\maven\plugins\maven-surefire-plugin\2.7.2\maven-surefire-plugin-2.7.2.jar
: error in opening zip file -& [Help 1]&&&&
&re: Maven入门--概念与实例(原)[未登录]
楼主见此文,豁然开朗,用了一年多的maven,不知其因,甚是感激&&&&
&re: Maven入门--概念与实例(原)
@tony这篇文章的历史太久远了,现在的Maven应该有很大变化了吧...我都已经很长很长很长时间没关注Maven了 :-(&&&&
&re: Maven入门--概念与实例(原)
非常好&&&&
&re: Maven入门--概念与实例(原)
@oliverlee我的也不成功啊,&&&&
&re: Maven入门--概念与实例(原)
写的真好,只是我按照文章一步步写下来但是不能打包成功,但是载了源代码就可以运行成功,真不知道哪里出错了。&&&&
&re: Maven入门--概念与实例(原)
maven构建java web demo项目源代码下载:&&&&
&re: Maven入门--概念与实例(原)
太棒了&&&&

我要回帖

更多关于 ubuntu nexus maven 的文章

 

随机推荐