当前位置:首页 » 编程软件 » maven编译用什么插件

maven编译用什么插件

发布时间: 2022-06-12 01:32:20

⑴ maven中插件plugin和依赖dependency的区别

插件是一种工具,例如compile插件是用来编译代码的工具,mybatis插件是用来自动生成数据库和mapper的工具。而依赖则是项目工程在编译过程中需要依赖的二方及三方包。在你的工程中可以不需要mybatis插件,自己去实现sql的crud,但如果工程里需要三房包,则必须要用dependency引入。

⑵ 如何用maven把依赖的jar包编译到最终生成的jar包中

有两种方法: 方法一:直接在当前mole中的pom.xml文件中添加你需要依赖的mole的坐标。这种方式简单,用的也比较多。 例如: org.test.autodeployorg.test.autodeploy0.0.1-SNAPSHOT方法二:这要中间使用一个nexus仓库,首先把你的工程使用ma...

⑶ maven 里怎么自动编译 groovy

1. 首先确定使用 Groovy 的版本

<properties>
<groovy.version>2.4.3</groovy.version>
</properties>

2. 配置项目依赖 Groovy 包和模块,这个看实际情况增加相关的依赖

<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy</artifactId>
<version>${groovy.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-json</artifactId>
<version>${groovy.version}</version>
</dependency>
...

3. 关键的步骤是使用 gmavenplus 插件,绑定 maven 的编译和执行周期

<plugin>
<groupId>org.codehaus.gmavenplus</groupId>
<artifactId>gmavenplus-plugin</artifactId>
<version>1.5</version>
<dependencies>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-ant</artifactId>
<version>${groovy.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>${groovy.version}</version>
</dependency>
</dependencies>
<executions>
<execution>
<goals>
<goal>addSources</goal>
<goal>addStubSources</goal>
<goal>compile</goal>
<goal>execute</goal>
</goals>
</execution>
</executions>
</plugin>

⑷ 如何在myeclipse中安装maven插件

Maven和Ant的区别一:
1.ant脚本是可以直接运行在maven中的。maven和ant最大的差别就是在于maven的编译以及所有的脚本都有一个基础,就是POM(project
object model)。这个模型定义了项目的方方面面,然后各式各样的脚本在这个模型上工作,而ant完全是自己定义,显然maven更胜一筹。
2.maven对所依赖的包有明确的定义,如使用那个包,版本是多少,一目了然。而ant则通常是简单的inclde
所有的jar。导致的最终结果就是,你根本无法确定JBoss中的lib下的common-logging
是哪个版本的,唯一的方法就是打开 META-INF
目录下MANIFEST.MF。
3.maven是基于中央仓库的编译,即把编译所需要的资源放在一个中央仓库里,如
jar,tld,pom,等。当编译的时候,maven会自动在仓库中找到相应的包,如果本地仓库没有,则从设定好的远程仓库中下载到本地。这一切都是自
动的,而ant需要自己定义了。这个好处导致的结果就是,用maven编译的项目在发布的时候只需要发布源码,小得很,而反之,ant的发布则要把所有的
包一起发布,显然maven又胜了一筹。
4.maven有大量的重用脚本可以利用,如生成网站,生成javadoc,sourcecode
reference,等。而ant都需要自己去写。
5.maven目前不足的地方就是没有象ant那样成熟的GUI界面,不过mavengui正在努力中。目前使用maven最好的方法还是命令行,又快又方便
Maven的优势:
•协同开发的基本规范,为大家提供方便的协作的模式,能增加代码的复用,提高生产率。
•提供方便,规范化的打包方法,是公司完成自动构建系统的核心部分,能帮助提高敏捷开发的效率(敏捷开发提倡尽早集成)。
•减少冗余,减少出错的可能。
•中心资源库管理,能减低源码库的大小,中心资源库可以统一定期备份。
•目录结构规范,让开发者从一个maven项目过度到另一maven项目很容易。
•大量的开源项目使用了maven。
Maven常用命令:
•mvn archetype:generate :创建
Maven 项目
•mvn
compile :编译源代码
•mvn
test-compile :编译测试代码
•mvn
test : 运行应用程序中的单元测试
•mvn
site : 生成项目相关信息的网站
•mvn
clean :清除目标目录中的生成结果
•mvn
package : 依据项目生成 jar 文件
•mvn
install :在本地 Repository 中安装
jar
•mvn
deploy:将jar包发布到远程仓库
•mvn eclipse:eclipse :生成
Eclipse 项目文件
Maven的安装配置:
在安装maven之前,先确保已经安装JDK1.7及以上版本,并且配置好环境变量。
下载maven3,最新版本是Maven3.2.1
,下载地址:http://maven.apache.org/download.html
下载apache-maven-3.2.1-bin.zip文件后,并解压到 D:\maven\apache-maven-3.2.1
配置maven3的环境变量:先配置M2_HOME的环境变量,新建一个系统变量:M2_HOME
, 路径是:D:\maven\apache-maven-3.2.1,如图所示:

再配置path环境变量,在path值的末尾添加"%M2_HOME%\bin",如下图所示;

点击确定之后,打开cmd窗口:输入
mvn -version,出现如下内容表示安装成功。

Maven添加本地仓库:

开本地存放maven目录
例如:D:\maven\apache-maven-3.2.1,打开conf文件夹下的settings.xml文件,找到第53行,把注释去掉,修改
成:<localRepository>E:/mvnRespo</localRepository>
eclipse中的设置:
为Eclipse安装Maven插件(默认已有,无需安装)为Eclipse配置MAVEN
从Eclipse的菜单栏点击Windows
-> Preferences -> Maven ->
Installations,将之前解压的maven添加进来,如图所示

点击User
Settings 使用我们自己的Maven配置,如图所示

http://jingyan..com/article/4f7d5712aa9c631a201927ea.html

⑸ 如何编写一个maven插件

基础

当maven内置的功能不能满足需求的时候怎么办,那就只能给它写插件了。 (话说回来,给maven扩展只能写一个很完整的插件,而不能是一个简单的script,真的是太笨重了)
网络上很多maven的文章,但基本很少谈及如何给它写插件,即使你搜索maven plugin,也只是给你返回一堆如何使用maven插件的文章。希望这边文章能给一些maven使用者带来帮助。
我在这里先假设你已经懂得使用maven,我不会贴出完整的pom.xml文件
首先,你需要创建一个maven项目,插件是一种特殊的maven项目 然后修改pom.xml,将packaging改为maven-plugin
<packaging>maven-plugin</packaging>通过properties定义maven的版本
<properties><maven.version>2.2.1</maven.version></properties>maven3已经出了很久,并且兼容maven2,因此我们团队内部都是统一使用maven3,但是我这里编写插件使用的是maven2,可以同时在maven2和maven3下使用,不过其实这个原因并不重要,真正的原因是因为maven3的代码实在太烂了,最初的时候我用maven3的api lib来写,发现里面很多代码根本没有注释,而且很多代码已经废弃,但是并没有明确说明究竟用什么方法代替。最后我使用了maven2中被maven3废弃的api来完成我的功能,跑的挺好的,就是有时可能会有一些使用准备废弃的api的提醒而已。

接着添加依赖
<dependencies><dependency> <groupid>org.apache.maven</groupid> <artifactid>maven-plugin-api</artifactid> <version>${maven.version}</version></dependency><dependency> <groupid>org.apache.maven</groupid> <artifactid>maven-core</artifactid> <version>${maven.version}</version></dependency></dependencies>然后开始创建Mojo类,maven插件里面每一个具体的功能都是一个Mojo 比如说eclipse:clean和eclipse:eclipse就是两个Mojo
/*** @goal helloWorld*/public class HelloWorldMojo extends AbstractMojo { public void execute() throws MojoExecutionException { getLog().info("Hello, world!"); }}首先继承AbstractMojo,并且实现execute()方法,这个就是每次调用进入的地方 然后需要在类的Javadoc上定义,这是一个annotation出来之前常用的定义方法(或许未来maven会将它改成annotation,那就能提供编译校验和IDE校验)。我们必须定义@goal,代表运行目标,简单来说就是eclipse:clean中的clean Mojo写在哪个package底下都是可以的
这样,我们就完成了一个简单的maven plugin,然后我们需要一个简单的测试来确定他正确运行 先通过maven install将它安装到本地仓库
然后打开任意maven的项目(比如说我们原来已经在用maven的项目),在pom.xml增加一个plugin
<build> <plugins> <plugin> <groupid>xxx</groupid> <artifactid>xxx</artifactid> <version>xxx</version> <executions> <execution> <phase>compile</phase> <goals> <goal>helloWorld</goal> </goals> </execution> </executions> </plugin> </plugins></build>需要留意的是phase部分,我们将这个plugin绑定到compile这个周期 然后我们运行mvn compile,就能成功看见Hello, world!输出 (当然你也可以直接通过命令行运行,需要带上完整的groupId和artifactId才能调用)

注入
Mojo是一个很简单的Java Bean模式的类,你会发现Mojo所继承的AbstractMojo里面之后非常少的方法。那我们需要在Mojo.execute里面获取当前运行中的上下文如何处理呢?答案是注入,就是跟spring ioc差不多的注入方式。
常用的注入主要有两种,第一种是xml配置中的额外设置 比如说我们有这么一个plugin的配置
<plugin><artifactid>maven-eclipse-plugin</artifactid><configuration><downloadsources>true</downloadsources></configuration></plugin>所有写在configuration里面的属性都可以注入到Mojo中,比如说以下代码
/** * @parameter */private boolean downloadSources;就可以通过downloadSources变量获得配置中的值 值得注意的是,这里是不用生成完整的JavaBean模式的get/set的,并且private是有效的
javadoc里面还可以加入其他属性,比如说
/** * @parameter default-value="true" * @readonly */private boolean downloadSources;就是默认为true,并且不能通过配置修改(当然我们这里肯定不会有这样的需求) 更多的javadoc可以参看官方文档中的说明
第二种注入的数据就是上下文,跟HttpServlet.getServletContext这种写法不一样,如果我们需要Mojo运行期的上下文,也是通过注入获得的
/** * @parameter expression="${project}" * @readonly */private MavenProject project;/** * @component * @readonly */private ArtifactFactory artifactFactory;例如这里我们就能获得ArtifactFactory和MavenProject 需要注意的是这里可能有两种方法,第一种跟xml配置获得的方法差不多,通过expression指定名字 实际上,你在xml里面,也可以通过${project}获得相应的东西进行一些简单的操作(当然xml里面只能文本描述,这里是一个类)
另外一种就是使用@component这个标注,可以获得一些基本的组件实例。

测试
写完一个插件之后,我们就需要对他进行测试 如果我们用人工测试的话,将会非常麻烦,因为maven插件本身的发布流程就非常复杂 你需要编译打包你的maven插件,然后安装到本地库(或远程私库中),然后写一个sample project,再运行,看一下是否正确 当然你也可以用单元测试来解决一些问题,但是单元测试比较难保证插件最终正确,而且maven插件很经常是跟文件打交道
这里我们就需要对maven插件进行自动化的集成测试 maven的生命周期是包含集成测试的,默认是没有绑定任何功能。不过如果你google一下,会找到一些maven进行集成测试的例子,大致就是启动jetty,然后通过http访问验证,再关闭jetty
我们这里使用的是maven-invoker-plugin,它就是用于maven插件的集成测试
先在pom.xml中加入
<build><plugins><plugin><artifactid>maven-invoker-plugin</artifactid><configuration><cloneprojectsto>${project.build.directory}/it</cloneprojectsto></configuration><executions><execution><id>integration-test</id><goals><goal>install</goal><goal>run</goal></goals></execution></executions></plugin></plugins></build>cloneProjectsTo是先将测试案例拷贝出来再运行 execution段的设定是把maven-invoker-plugin的两个goal绑定到integration-test上 integration-test这个生命周期会在mvn install之前调用
集成测试的内容放在 src/it 目录下,每新建一个目录代表一个独立的测试,里面放一个完整的maven项目,当然你在这个项目里面需要引入自己编写的maven插件并且运行 另外还需要一个postbuild.groovy文件,放在测试案例的根目录,这个脚本的用处是检查运行后的maven项目是否达到自己要的效果。很明显,看名字就知道用groovy来写,一般我们会检查一下,是否产生了某某文件等等来判定,如果不正确的话抛出异常
然后我们在maven插件目录运行mvn integration-test就能进行集成测试了

⑹ maven-compiler-plugin source和target的区别

maven-compile-plugin 这个插件就如同名字所显示的这样,用来编译源代码的。 最开始碰到这个插件是在于有的时候我们下载了一些工程需要编译的时候,比如我们输入命令:mvn install , 但是系统编译的时候报错了,错误的信息如下: [ERROR] Faile

⑺ eclipe maven 使用的编译器是哪个

在Eclipse中新建了一个Maven工程, 然后更改JDK版本为1.6, 结果每次使用Maven > Update project的时候JDK版本都恢复成1.5。 一、原因分析: Maven官方文档有如下描述: 编译器插件用来编译项目的源文件.从3.0版本开始, 用来编译Java源文件的默认

⑻ 用maven编译项目时出现如下问题

在/etc/profile配置java的环境变量: 你的mvn 项目是用哪个版本的jdk.,就要配置那个版本的jdk。

强制保存文件命令:w !sudo tee %

此时在进入项目执行:$ git pull origin master

继续mvn clean install

⑼ maven pom.xml引入build-helper-maven-plugin插件有什么作用

AndroidMavenPlugin——这个是Maven的插件,目的是能在使用mvnpackage时让maven构建出一个能在Android上使用的目标文件。工具的介绍完毕,下面看看如何将Maven整合进一个Android工程:首先看看对于已经存在的Android工程:安装好如上的插件,在Android的工程上点右键,弹出菜单Configure->ConverttoMavenproject配置好项目信息后会生成pom.xml以及工程上的图标已经多出一个小M字更改project的packaging类型为apk[html]viewplain4.0.0org.cst.ming.android.samplesample0.0.1-SNAPSHOTapk在pom内声明一个build的插件,在maven构建项目的时候就会在target内生成一个apk的文件[html]viewplain注意,这里指定了插件的版本,这个是maven官方提供的建议,需要在构建插件中指定插件版本;还有一点就是必须指定sdk.platform及sdk.path属性,不然会因为找不到sdk而无法build的com.jayway.maven.plugins.android.generation2android-maven-plugin3.0.0truetrue7${env.ANDROID_SDK_HOME}truetrue这时候可以在pom.xml内添加各种的依赖,并且执行mvncleanpackage即可构建出一个apk文件在target此时已经整合完毕,可以在IDE内通过ADT来启动项目,亦可以通过在pom.xml内配置android-maven-plugin通过mvnandroid:deploy将项目部署到指定的设备(虚拟机)上,详情可以查阅android-maven-plugin的官方文档对于新建项目的:在新建项目的时候可以采用archetype(项目原型)的方式构建,在向导内选择项目原型,分别有de.akquinet.android.archetypes:android-quickstart:1.0.6——用于快速构建一个android-maven项目de.akquinet.android.archetypes:android-with-test:1.0.6——用于构建一个带有测试的android-maven项目de.akquinet.android.archetypes:android-release:1.0.6——用于构建一个可以发布的android-maven项目,其中包含了一个纯maven的父项目及两个子android-maven项目在项目创建之后,还有点需要修改的,由于android-maven-plugin原名为maven-android-plugin,因为某种关系在某个版本之后更名为android-maven-plugin,但在这个原型内还是使用旧的maven-android-plugin,所以需要使用新插件的必须手动修改plugin.artifactId及其plugin.version

⑽ maven compiler plugin3.1compile是什么意思

maven-compile-plugin

这个插件就如同名字所显示的这样,用来编译源代码的。


最开始碰到这个插件是在于有的时候我们下载了一些工程需要编译的时候,比如我们输入命令:mvn install


但是系统编译的时候报错了,错误的信息如下:


[ERROR]Failedtoexecutegoalorg.apache.maven.plugins:maven-compiler-plugin:2.0.2:compile(default-compile)onprojectspringJMS:Compilationfailure:Compilationfailure:
[ERROR]/home/frank/programcode/SpringJMSSample/src/main/java/huangbowen/net/jms/MessageSender.java:[6,1]error:annotationsarenotsupportedin-source1.3
[ERROR]
[ERROR](use-)
[ERROR]/home/frank/programcode/SpringJMSSample/src/main/java/net/EmbedBrokerApp.java:[5,7]error:-source1.3
[ERROR]->[Help1]
[ERROR]
[ERROR],re-runMavenwiththe-eswitch.
[ERROR]Re-runMavenusingthe-.
[ERROR]
[ERROR],:
[ERROR][Help1]http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

从错误显示的信息我们就可以看出,这是因为编译的时候是默认用的javac 1.3版本的,太老了不支持代码里的特性。


为了修改这个问题,我们需要设置编译器的版本。

解决这个问题的办法也比较简单,就是直接在后面的插件部分增加如下的插件,


比如如下部分,将编译器的版本设定为1.7:


<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
热点内容
内置存储卡可以拆吗 发布:2025-05-18 04:16:35 浏览:335
编译原理课时设置 发布:2025-05-18 04:13:28 浏览:378
linux中进入ip地址服务器 发布:2025-05-18 04:11:21 浏览:612
java用什么软件写 发布:2025-05-18 03:56:19 浏览:32
linux配置vim编译c 发布:2025-05-18 03:55:07 浏览:107
砸百鬼脚本 发布:2025-05-18 03:53:34 浏览:943
安卓手机如何拍视频和苹果一样 发布:2025-05-18 03:40:47 浏览:739
为什么安卓手机连不上苹果7热点 发布:2025-05-18 03:40:13 浏览:803
网卡访问 发布:2025-05-18 03:35:04 浏览:511
接收和发送服务器地址 发布:2025-05-18 03:33:48 浏览:371