myeclipse 依赖树工程怎么选择依赖targeted runtime

下次自动登录
现在的位置:
& 综合 & 正文
Maven命令详解
MyEclipse + Maven开发Web工程的详细配置过程
一:Maven命令解释:
mvn compile:编译
mvn test:测试
mvn clean:清空,会去除掉target文件(报告文件,一些错误信息会在这里面)。
mvn package:打包(会将我们的项目打包成一个jar包这个jar包同样可以配置到pom.xml中供其他项目使用)(项目中引入模块很有用)
mvn install:将自己的项目打包放到maven仓库中,可以供其他项目引用。
//以下两项一般只有在手动创建项目时需要使用
mvn archetypes:generate会下载相应的骨架信息,自己选择所需要的骨架,然后按提示输入groupId和artifactid和版本号和包名即可完成maven项目的自动建立
这个命令也可以一次性全部使用,例如:
mvn arcgetype:generate -DgroupId=com.trs.xingcheng -DartifactId=xingcheng -Dversion=0.0.1 -SNAPSHOT
举例说明install:
&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一般写我们的项目加公司域名倒过来写--&
&groupId&com.trs&/groupId&
&!--项目中的块文件--&
&artifactId&xingcheng&/artifactId&
&version&0.0.1-SNAPSHOT&/version&
以上是我的项目配置文件:
运行install之后在本地maven仓库中可以找到.com.trs.xingcheng文件夹,其中包含如下文件
(1)0.0.1-SNAPSHOT文件夹:我的项目版本:这其中包含_remote.repositories文件,xingcheng-0.0.1-SNAPSHOT.jar,xingcheng-0.0.1-SNAPSHOT.pom,maven-metadata-local.xml
解释:xingcheng-0.0.1-SNAPSHOT.pom这个文件就是你项目的pom.xml,这里面配置了所有该项目需要的包,这也就解释了maven引入某包时会将依赖的包一同导入的原因。
(2)maven-metadata-local.xml文件
&?xml version="1.0" encoding="UTF-8"?&
&metadata&
&groupId&com.trs&/groupId&
&artifactId&xingcheng&/artifactId&
&versioning&
&versions&
&version&0.0.1-SNAPSHOT&/version&
&/versions&
&lastUpdated&13&/lastUpdated&
&/versioning&
&/metadata&
二:maven中的隐藏名称:
${basedir}:项目根目录
${project.build.directory}:构建目录,缺省为target
${project.build.outputDirectory}:构建过程输出目录,缺省为target/classess
${project.build.finalName}产出物名称,缺省为${project.artifactId}-${project.version}
${project.packaging}打包类型,缺省为jar
${project.xxx}当前pom文件的任意节点内容,例如:想得到groupId可以${project.groupId},得到项目版本号可以使用${project.version}
使用例子:模块导入
&dependency&
&groupId&${project.groupId}&/groupId&
&!--以下引入的是该项目的一个模块项目,它和当前项目属于同一项目,有相同的groupId--&
&artifactId&user-log&/artifactId&
&!--当前项目的版本号--&
&version&${project.version}&/version&
&/dependency&
&!--以上配置可以将该日志模块项目导入到当前模块中,并且会将该项目所需要的所有依赖的包导入到当前模块。注意(引入的那个模块需要利用clean install命令打包,这样才可以利用maven的pom配置导入如果是利用clean package打包的话,引入该项目后还需手动讲该日志模块所需要的包导入的当前项目的lib文件夹中不然会由于缺少包而报错,而这样做会失去了maven管理jar包的价值,所以建议用clean install命令生成包到本地的maven仓库中)--&
三:maven的配置中的&scope&&/scope&详解
(1)scope的默认值是compile,指的是编译时依赖,即编译时就会将依赖包下载到maven仓库中(缺省值,适用于所有阶段,会随着项目一起发布)
(2)test:只有在测试的时候会依赖这个包,即打包的时候不会将配置为test的junit包加进去。(只在测试时使用,用于编译和运行测试。不会随项目发布)
test项的包只对test源文件下的类起作用,如果将junit的代码放到src下,而junit配置为test将会出现找不到junit包的错误。
(3)provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。
(4)runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。
(5)system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。
================================================================================================================
四:传递依赖或说间接依赖:
例如:A项目依赖L项目版本1.1
B项目依赖L项目版本1.2
C项目依赖项目A和项目B
maven包中导入的将是先配置的项目中依赖的包,即如果项目C配置中先依赖A,再依赖B,则导入的L版本将是1.1
以上是在依赖级别相同的情况下的依赖关系,如果依赖级别不容的话,将会依赖于依赖级别高的项目。例如:A依赖D D依赖L的1.1,则C依赖L的1.2
通过这个原理可以通过在高级别中依赖新版本来屏蔽间接依赖中的旧版本。
五:排除依赖
&exclusions&
&exclusion&
&groupId&&/groupId&
&artifactId&&/artifactId&
&/exclusion&
&/exclusions&
注意将这对配置放在最高版本的dependency中这样就只引入最高版本的项目,而可以排除其他版本的依赖。
可以用来解决包冲突问题。
六:聚合(模块管理):
(1)模块编译的聚合:简述:当一个项目以模块的形式开发的,即每一层或每一种功能放入在一个模块中开发,例如:将dao和service和action和log等分别放在不同的开发模块中开发,这样这个
项目就由这么多模块组成,这样编译项目时每次都需要将所有模块编译一次,这样非常麻烦,为了解决这个问题我们可以在这些模块的根目录即工程目录下建立一个pom.xml文件来管理整个工程。或者利用eclipse建立一个新的maven项目,在选择package时不要选择jar和war,我们选择pom类型即可。
在新项目的pom中加上聚合配置:
&!--导入了三个模块,把这三个模块聚合在一起--&
&module&../模块一&module&
&module&../模块二& module&
&module&../模块二& module&
&/modules&
这样就只需要对这个聚合项目进行clean操作就可以完成所有模块的clean操作,操作结果时所有模块下的target下的文件都没了(注意操作后刷新模块)。
(2)a:集成:聚合模块聚合共有的pom(非dependency,是一些其他配置如properties,url)
即将各个聚合模块中共同的pom配置提取出来放到一个新的pom的maven工程中进行统一配置,再让各个模块继承该聚合模块即可。
继承配置如下:在每个模块的头部的&modelVersion&&/modelVersion&配置下添加如下配置:
&groupId&项目的groupId&/groupId&
&artifactId&parent&/artifactId&
&version&&/version&
&relativePath&../parent/pom.xml&/relativePath&
b:聚合模块聚合不共有的pom(dependency的聚合)
即可以将各个模块中的dependency放到pom管理模块中配置,在其中加上
&dependencyManagement&
&dependencies&
&!--以下放置各个模块中的dependency--&
&/dependencies&
&dependencyManagement&
配置完这个后在各个模块中原有的dependency配置就只需要配置groupId和artifactId即可。
通过以上配置可看到聚合的配置很像集成,所以可以把聚合项目中的配置放到集成项目中来完成。
当然也可以将配置完后的pom直接放到工程中,这样就可以少掉一个项目,放过去之后需要改动下配置如各个子模块中的&parent&下的&relativePath&中的路径需要修改和聚合中的&modules&中&module&中的路径等。
七:版本号讲解
x.x.x里程碑的版本即有大的变化即第一个x代表的版本例如struts1和struts2,包含这些SNAPSHOT(快照版还在开发中的版本),alpha内部的测试版本,beta测试版本使用人员起初用的版本,Release版本(RC)释放版本,GA(可靠版本)。
八:仓库问题:依赖包的宁一个仓库nexus sonatype管理。这个在多个模块管理中有一定作用,没使用到,所以暂时没具体研究。好像是收费的,免费版现在不更新了,不过可以下载免费版学习下。用到了再做补充。23
九:Maven的生命周期clean compile site
1.clean包含三个步骤pre-clean执行一些需要在clean之前完成的工作,clean:移除所有上一次构建生成的文件,post-clean执行一些需要在clean之后立刻完成的工作。
2.compile:
generate-sources
process-sources
generate-resources
process-resources复制并处理源文件,至目标目录,准备打包。
compile编译项目的。
process-classes
generate-test-sources
process-test-sources
generate-test-resources
process-test-resources复制并处理源文件,至目标测试目录
test-compile编译测试源代码
process-test-classes
test使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。
prepare-package
package接受编译好的代码,打包成可发布的格式,如JAR
pre-intergration-test
intergration-test
post-intergration-test
install将包安装到本地仓库,以让其他项目依赖。
deploy将最终的包复制到远程仓库,以让其他开发人员与项目共享。
pom.xml详解推荐:http://www.blogjava.net/jianyue/articles/227932.html
springmvc+spring+hibernate+maven的pom/vc-mfc/1267158.html
MyEclipse + Maven开发Web工程的详细配置过程
好久没做Web方面的开发,今天突然想弄弄SpringMVC,因为不久前又学了点Maven觉得非常好,所以在弄SpringMVC这个Web框架时想使用Maven来做,但是问题又来了,我一直是在Eclipse中使用Maven,而我以前一直用MyEclipse做Web开发(在Eclipse中做web开发个人认为一点都没MyEclipse方便,在MyEclipse中可以直接使用Tomcat调试,很是方便),那么怎样才能既使用MyEclipse又能使用Maven呢,今天作了一翻"捣鼓",写了这篇文章。
就一步一步写来吧:
1. 使用Maven创建webapp工程----原因是使用Maven时一般需要遵循一定的目录结构,虽然也可以使用不同的目录结构,但目前还不熟悉如何修改pom.xml文件达到目的,而且修改太多默认配置对maven来说也不好。
创建方法,在一个目录下使用命令:mvn archetype:generate -DarchetypeArtifactId=maven-archetype-webapp。按照提示输入相应的参数,中间过程如下:
D:\study\workspace4&mvn archetype:generate -DarchetypeArtifactId=maven-archetype-webapp
[INFO] Scanning for projects...
[INFO] Generating project in Interactive mode
Define value for property 'groupId': : com.xjd
Define value for property 'artifactId': : mywebapp
Define value for property 'version':
1.0-SNAPSHOT: :
Define value for property 'package':
com.xjd: :
Confirm properties configuration:
groupId: com.xjd
artifactId: mywebapp
version: 1.0-SNAPSHOT
package: com.xjd
[INFO] BUILD SUCCESS
[INFO] -----------------------------------------
[INFO] Total time: 1:46.199s
[INFO] Finished at: Wed Nov 09 15:02:18 CST 2011
[INFO] Final Memory: 6M/15M
D:\study\workspace4&mvn archetype:generate -DarchetypeArtifactId=maven-archetype-webapp
[INFO] Scanning for projects...
[INFO] Generating project in Interactive mode
Define value for property 'groupId': : com.xjd
Define value for property 'artifactId': : mywebapp
Define value for property 'version':
1.0-SNAPSHOT: :
Define value for property 'package':
com.xjd: :
Confirm properties configuration:
groupId: com.xjd
artifactId: mywebapp
version: 1.0-SNAPSHOT
package: com.xjd
[INFO] BUILD SUCCESS
[INFO] -----------------------------------------
[INFO] Total time: 1:46.199s
[INFO] Finished at: Wed Nov 09 15:02:18 CST 2011
[INFO] Final Memory: 6M/15M
最后在文件夹下创建了一个Maven的webapp工程,该工程的文件夹根目录下"mywebapp"(请查看上面的过程),该目录的结构为
+---pom.xml
+---resources
+---webapp
+---index.jsp
+---WEB-INF
+---web.xml
+---pom.xml
+---resources
+---webapp
+---index.jsp
+---WEB-INF
+---web.xml
2. 激活配置MyEclipse的Maven插件---我使用的是MyEclipse8.5,它本身就带有一个叫Maven4MyEclipse的插件,只需要激活和配置一下即可。
激活方法:window--&preference--&MyEclipse--&Maven4MyEclipse, 勾选复选框(Enable Mave4MyEclipse features)。
配置方法:就在激活方法打开的节点下,有一个Maven节点,展开这个节点,主要配置其下的两个节点,如下:
Installations:
这一个节点默认使用内置的maven,我们需要使用我们安装的maven,点"add",添加一个我们外部安装的maven即可,注意添加后就勾选上。
User Settings: 默认的是C盘用户目录下的.m2/settings.xml文件,这里要配置外部安装的maven使用的配置文件,如我使用的就是maven安装目录下的conf/settings.xml文件,选择之后别忘了点击一下,下方的"Update Settings"按钮。
3. 用MyEclipse导入Maven创建的工程:
导入有两种方法这里分步讲解:
1) 使用MyEclipse的普通工程导入,步骤如下:
1& 先打开dos,在工程根目录下(mywebapp)运行: mvn eclipse:eclipse---运行完后会发现在工程目录下多出了两个文件.classpath和.project,这是eclipse的工程文件,当然myeclipse也识别
2& 在MyEclipse中使用导入功能,选择File--&Import...--&Existing Projects into workspace,选择工程目录,导入即可
3& 关联Maven,导入后的工程只是一个普通java的工程,并不会与maven插件相关连,此时在工程上点击右键--&Maven4MyEclipse--&Enable Dependency Management,这样,这个工程就与Maven插件关联了(关联后工程根节点左上角上会有一个M的标识)。
2)使用MyEclipse中的Maven工程导入,步骤如下:
1& 在MyEclipse中使用导入功能,选择File--&Import...--&Existing Maven Projects(这里不同),选择工程目录,导入即可。---这里导入进,MyEclipse可能会联网更新索引,很慢,我们可以取消(在Progress面板中点那个大红框),这时工程导进来了,但是没有执行该有的操作,比如maven的dependcy检查等,此时进行一下第2步操作。
2& 更新一下工程配置,右键工程--&Maven4MyEclipse--&Update Project Configuration
4. 补全工程的目录结构,第1步中生成的maven工程目录是不全的,比如我们的java代码,我们的测试目录等,现手动创建,和补全为如下:
+---pom.xml
+---resources
+---webapp
+---index.jsp
+---WEB-INF
+---web.xml
+---resources
+---target
&&eclipse自动添加
+---classes
&&eclipse自动添加
+---test-classes
&&eclipse自动添加
+---pom.xml
+---resources
+---webapp
+---index.jsp
+---WEB-INF
+---web.xml
+---resources
+---target
&&eclipse自动添加
+---classes
&&eclipse自动添加
+---test-classes
&&eclipse自动添加
5. 增加MyEclipse的Web Project功能
到目前为止,我们仅仅是把一个Maven的webapp导入到了MyEclipse中,然而在MyEclipse中,这还仅仅是一个Java普通的Maven工程,这一步我们就要为其添加MyEclipse的web project特性。
选择工程--&MyEclipse--&Project Capabilities--&Add Web Project Capabilites,弹出窗口中设置参数如下,再接下来的弹出窗口中选择yes。这样我们的工程就是web工程了(注意工程图标有变化,而且MyEclipse自动依赖了JEE的包)。
6. 配置工程属性,打开工程属性面板---这一步很重要,都是些细节配置,缺一不可啊
1) Java Build Path
添加src/main/java, src/test/java, src/test/resources为source folder, 这里就不需要详述了吧,点"add folder"就行。
最小面的"default output folder"修改为"mywebapp/src/main/webapp/WEB-INF/classes"---这点很重要
修改这些source folder的输出目录,其中main/java和main/resources输出到default output folder, 而test/java和test/resources输出到target/test-classes中,(如何修改---点击各节点下的Output Folder, 再点右边的edit按钮就行了)最后设置结果如下:
2& Order And Export
为了显示好看,调整一下显示顺序,不细说了,很简单,看下图:
2)Java Compiler
注意到上面的图片中,我的工程显示jdk为1.4,所以要修改成我们想要的版本,这里就不详述了,应该都会改。
3) Myeclipse--&Web
这一个是用来修改设置工程的web特性的,如下图:
好了,一个MyEclipse的Web Project + Maven webapp的工程就建好了。剩下的就是在myeclipse中开发和调试web最后用maven打包,当然一定要使用maven的依赖特性(把要依赖的jar包直接在pom.xml中加入,然后刷新工程就会自动导入)。
&&&&推荐文章:
【上篇】【下篇】啊磊 的BLOG
用户名:啊磊
文章数:10
访问量:7861
注册日期:
阅读量:5863
阅读量:12276
阅读量:424776
阅读量:1113189
51CTO推荐博文
Build Path=&configure Build Path...=&Libraries=&
Add Library...=&选择MyEclipse Libraries=&勾选上 Java EE 5 Libraries 就可以解决啊!
&本文出自 “” 博客,转载请与作者联系!
了这篇文章
类别:未分类┆阅读(0)┆评论(0)&|&&|&&|&&|&&
当前位置: >
MyEclipse导入项目报错Target runtime com.genuitec.runtime.generic.jee60 is not defined.
作者:wlwlwlwl015 & 来源:转载 &
浏览次数:
摘要: 如题,有时候在导入别人的项目到自己的工作空间中会报这个错误,简单记录一下这个问题以及类似问题(xxxisnotdefined.)的解决方案。错误如下图:首先,进入我们MyEclipse的工作空间的文件目录,找到项目目录,可以看到.settings文件夹,如下图:接下来找到上图中选中的文件,org.mon.project.facet.core.xml,点击编辑可以看到文
如题,有时候在导入别人的项目到自己的工作空间中会报这个错误,简单记录一下这个问题以及类似问题(xxx is not defined.)的解决方案。
错误如下图:
首先,进入我们MyEclipse的工作空间的文件目录,找到项目目录,可以看到.settings文件夹,如下图:
接下来找到上图中选中的文件,org.mon.project.facet.core.xml,点击编辑可以看到文件内容如下图:
删除第三行后保存并在MyEclipse中刷新项目,问题解决:
版权所有 IT知识库 CopyRight (C)
, All Rights Reserved.MyEclipse导入已有工程时,提示unbound classpath variable
MyEclipse导入已有工程时,提示&&
The project cannot be built until build path errors are resolved
&Unbound classpath variable: 'TOMCAT_HOME/common/lib/jasper-runtime.jar '&&
Unbound classpath variable: 'TOMCAT_HOME/common/lib/jsp-api.jar '&&
Unbound classpath variable: 'TOMCAT_HOME/common/lib/servlet-api.jar ' &&
一是TOMCAT_HOME这个环境变量没有
解决方法:在windows—&Preferences-&Java_&build path-&环境变量中,建立TOMCAT_HOME变量,指向tomcat 安装根目录即可解决
二是tomcat安装目录下的common文件夹是tomcat5.X以前的版本,有common,tomcat6.x以后就直接是lib了,少了一层common
解决办法:在导入的项目的.classpath中,修改文件,把common去掉,
其中&Tomcat6.0之前的版本以Tomcat5.5.20 压缩版为例,这个jasper-runtime.jar在Tomcat5.5.20/common/lib下就自带有的。但是在Tomcat6.0版本后lib包的位置调整了,现在只有lib在跟目录下。jasper-runtime.jar和jasper-compiler-jdt.jar、jasper-compiler.jar等都集成到jasper.jar包中去了。
因此需要把jasper-runtime.jar改为jasper.jar
详情见:http://blog.csdn.net/zdwzzu2006/article/details/6086944
另外导入的是web工程的话,需要先在myEclipse中新建同名的webService工程而不是web工程就可以。
突发情况:导入的第十五章DWRtest这章必须在tomcat5.x环境下运行,于是:
1 新建同名webService工程,导入fileinsystem,勾选create completely structrue。
2 class不用改,在环境变量里面更改了tomcat_home为新下载的tomcat5.5的路径
3 修改服务器端口为8085
4更改为debug模式。
目前的问题:
无法将15章的项目顺利导入myeclipse并且运行,需要重新看课本前面
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:6799次
排名:千里之外
(3)(2)(3)(1)(2)(1)(4)myeclipse如何删除Apache Tomcat v6.0 Runtime Libraries,又要保证代码编译、运行正常
如图,这样代码编译和运行都没有问题, ,但是,每个人的运行环境不一样,下载下来的代码就需要修改runtime server。所以我将runtime libraries下的几个重要jar包放在了项目的lib目录下,但是这样如果发布到tomcat下,会和tomcat下的servlet-api.jar、servlet-api.jar包冲突;如果直接将 runtime libraries直接删除,这样jsp会有很多因缺失servlet-api.jar、servlet-api.jar包报错,如图。 &&
非maven项目
用 maven 吧,告别这种烦人的包引用问题

我要回帖

更多关于 myeclipse 添加依赖包 的文章

 

随机推荐