我试图找出Maven的用法,并且我有很多文章描述了它的功能和用途。但是,从生产力的角度来看,我无法理解Maven的实际用途。
从我在学校项目中习惯的只是在Eclipse中创建一个新的Java项目,编写你的代码,创建一个.war(如果是基于web的)并将代码粘贴到Tomcat的webapps文件夹中并启动服务器!
所以,
Maven在哪里拍照?我使用过Ant,我理解Ants对标准化构建过程的好处。但为什么我们需要Maven形式的高级Ant?
无论如何,我需要使用它,所以我从哪里开始 - 基本流程,一些好的教程?
由于
答案 0 :(得分:14)
Maven用于管理构建,测试和部署过程。它可以分离单元测试和集成测试,因此您只需在必要时运行它们并减少构建时间。
它也是依赖管理器,这意味着当您意识到项目的服务器部分需要apache commons-logging 1.0.4
但客户端与0.7.9
之后的任何内容冲突时,您可以在相应的pom.xml
文件中添加几行,Maven处理所有这些(下载,安装和跟踪这些依赖项的不同版本)。
在我目前的任务之前,我不是一个信徒,但是在将它用于大型企业应用程序两年后,我绝对尊重Maven带来的东西。有很多在线资源,但如果你要成为领导者并且真的感到不舒服,我建议你买一本书 - the O'Reilly one很有帮助。
忘记提到有一个Eclipse插件,它使得与Eclipse一起使用几乎无痛:m2Eclipse。
第二次更新示例pom.xml
段以回答OP问题:
您的pom.xml
将包含XML代码,例如:
<dependencies>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.0.4</version>
<scope>provided</scope>
</dependency>
</dependencies>
这些是从中央Maven存储库(google“maven nexus”)下载的,或者您可以配置自己的其他存储库(例如您自己的项目,或者如果您没有连接到Internet)。
答案 1 :(得分:5)
我与你一样完全同样的感觉,多年来我避免使用Maven。
问题是,它允许您轻松获取应用程序可能需要的所需jar(称为依赖项 - jar和其他东西 - )。因此,下次有人运行你的项目时,他会自动获得罐子。
我知道在使用现有项目之前,有点难以理解。
例如,我最近下载了一个开源项目,它依赖于10或12种不同的jar版本。下载源代码并执行Maven之后,所有这些jar(以及更多其他的)都是为我下载的。
Maven(我的朋友告诉我)的问题是,为了执行“Hello world”计划,它首先下载世界来迎接他。 :P
答案 2 :(得分:4)
对于那些想知道maven下载依赖关系jar的人,请查看用户根目录中名为.m2的文件夹。例如。对我来说,它是c:\ documentsand settings \ myUserName.m2 \
我也对maven进行了一些研究,我做了一些像提醒一样的小涂鸦。如果值得阅读,那么这里是::
/ * mvn生成 mvn install下载所有必要的jar mvn测试测试应用程序... mvn site构建站点下载依赖项
要部署网站,我们需要在pom.xml中声明要分发的位置, 类似于部署存储库。 ... 网站 SCP://www.mycompany.com/www/docs/project/ ...
mvn site-deploy部署网站
如何构建网站结构: site.xml文件用于描述站点的布局,并替换Maven中使用的navigation.xml文件
下面给出了一个样本:
Maven的 http://maven.apache.org/images/apache-maven-project.png http://maven.apache.org/ http://maven.apache.org/images/maven-small.gif
<menu name="Maven 2.0">
<item name="Introduction" href="index.html"/>
<item name="Download" href="download.html"/>
<item name="Release Notes" href="release-notes.html" />
<item name="General Information" href="about.html"/>
<item name="For Maven 1.x Users" href="maven1.html"/>
<item name="Road Map" href="roadmap.html" />
</menu>
<menu ref="reports"/>
...
所以实际上,我们需要将我们的html链接到这种结构格式来制作网站布局 为了让我们添加任何新的CSS或这样的东西,我们需要做的就是将它们放入资源的一部分 src文件夹
然后我们可以创建我们项目的war文件,并将其放在apache的httpd文件夹或web服务器的类似文件夹中
如果我们需要生成项目,我们需要在pom.xml文件中添加几行代码,即: ... org.apache.maven.plugins Maven的项目信息的报告,插件 2.0.1 ...
另外,站点描述符将在site.xml中设置
详细信息可以在maven的文档中看到
maven结构及其重要性:
项目/
pom.xml - 定义项目
SRC /
主要/
java / - 包含将进入最终工件的所有Java代码
有关详细信息,请参阅maven-compiler-plugin
scala / - 包含将进入最终工件的所有scala代码。 ////至今我们目前的项目还不需要
有关详细信息,请参阅maven-scala-plugin
resources / - 包含类路径上应该可用的所有静态文件
在最后的神器中。有关详细信息,请参阅maven-resources-plugin
webapp / - 包含Web应用程序的所有内容(jsps,css,图像等)
有关详细信息,请参阅maven-war-plugin
site / - 包含用于创建项目网站的所有apt或xdoc文件
有关详细信息,请参阅maven-site-plugin
测试/
java / - 包含用于测试的所有java代码
有关详细信息,请参阅maven-compiler-plugin
scala / - 包含用于测试的所有scala代码
有关详细信息,请参阅maven-scala-plugin
resources / - 包含应该可用的所有静态内容
测试期间的类路径。有关详细信息,请参阅maven-resources-plugin
mvn验证这将验证是否满足所有依赖项并且没有遗漏任何内容 mvn编译这将编译项目 mvn verify检查包是否有效 同样在项目中,依赖项将被插入到xml文件中
依赖注入的例子如下: org.scala琅 斯卡拉库 2.7.2-RC2 JUnit的 JUnit的 3.8.1 测试
每个依赖项都包含几个项目:
* groupId - The group of the dependency to rely on
* artifactId - The artifact in the group to rely on
* version - The version of the dependency to rely on
* scope - The "scope" of the dependency. Defaults to compile (more details later)
* packaging - The packaging for the dependency. Defaults to jar (e.g. jar, war, ear)
您可以按照以下步骤整合静态页面:
* Put your static pages in the resources directory, ${basedir}/src/site/resources
* Create your site.xml and put it in ${basedir}/src/site
* Link to the static pages by modifying the menu section, create items and map them to the filenames of the static pages
mvn tomcat:部署到tomcat或apache,你可以去执行这个命令
答案 3 :(得分:3)
Free books about Maven可以从Sonatype下载(Maven的原始开发人员来自)。
另请参阅Apache Maven网站上的文档。
答案 4 :(得分:1)
Maven在哪里拍照?一世 使用过Ant,我理解蚂蚁 标准化构建的好处 处理。但为什么我们需要一个 Maven形式的高级Ant?
无论如何,我需要使用它,所以 我从哪里开始 - 基本流程, 一些很好的教程?
有帮助的。
答案 5 :(得分:1)
用于创建多模块项目,用于大项目等
这是关于 Maven 的一个很好的教程: 创建文件和文件夹结构: src 、test 、 main 、 target 文件夹等 前任。 maven 插件 mvn clean 删除目标目录等阅读下面的链接 http://tutorials.jenkov.com/maven/maven-tutorial.html https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html https://www.youtube.com/watch?v=m_eWc9pjyg4&ab_channel=luv2code https://mkyong.com/maven/maven-how-to-create-a-multi-module-project/ https://examples.javacodegeeks.com/enterprise-java/maven/maven-project-structure-example/#:~:text=Directory%20layout.-,Target,content%20with%20mvn%20clean%20command。 https://maven.apache.org/plugins/maven-clean-plugin/examples/delete_additional_files.html https://javarevisited.blogspot.com/2019/03/top-5-course-to-learn-apache-maven-for.html What exactly is a Maven Snapshot and why do we need it? https://www.wikitechy.com/tutorials/maven/maven-snapshots
答案 6 :(得分:0)
最新的netbeans也有很好的maven集成。
答案 7 :(得分:0)
如果您在组织内,请尝试构建maven存储库代理。 Artifactory是个不错的选择。