关于maven的几个常用插件

最近整理了自己写的一个项目,使用maven+svn管理,idea开发,搭建了一个maven的私服.原来是凌乱不堪,所以费了好大劲才整理好,而且平时公司项目上事情多的一米...

下面说说使用的几个插件(至于那些dependency就让它们见鬼去吧)

不说废话了,代码贴上

1.clean插件

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-clean-plugin</artifactId>
    <version>2.5</version>
    <configuration>
        <filesets>
            <fileset>
                <directory>F:/logs</directory>
            </fileset>
            <fileset>
                <directory>../message-test</directory>
                <includes>
                    <include>spy.log</include>
                </includes>
            </fileset>
            <fileset>
                <directory>../message-test/target</directory>
            </fileset>
        </filesets>
    </configuration>
</plugin>
image.gif
image.gif

这个插件没啥好说的,要是不需要删除别的地方代码,就用默认的,不用任何配置

2.单元测试插件

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.16</version>
    <configuration>
        <skip>true</skip>
    </configuration>
</plugin>
image.gif
image.gif

单元测试没做好,一测就报错,干脆给skip了

3.resources

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.6</version>
    <executions>
        <execution>
            <id>copy-resources</id>
            <!-- here the phase you need -->
            <phase>validate</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <outputDirectory>${basedir}/target/test-classes</outputDirectory>
                <resources>
                    <resource>
                        <directory>${basedir}/src/main/webapp/WEB-INF/config</directory>
                        <filtering>true</filtering>
                    </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
</plugin>
image.gif
image.gif

用来复制一些资源文件,配置都是直译的

4.war

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.4</version>
    <configuration>
        <warName>${message.war.name}</warName>
        <includeEmptyDirectories>true</includeEmptyDirectories>
        <webResources>
            <resource>
                <directory>../message-easyjs</directory>
                <targetPath>js</targetPath>
                <excludes>
                    <exclude>**/.svn</exclude>
                    <exclude>**/*.iml</exclude>
                    <exclude>**/pom.xml</exclude>
                </excludes>
            </resource>
        </webResources>
    </configuration>
</plugin>
image.gif
image.gif

打war包的插件

下面两个个才是重点

5.jetty

<plugin>
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>maven-jetty-plugin</artifactId>
    <version>6.1.10</version>
    <configuration>
        <!-- 配置扫描时间 -->
        <scanIntervalSeconds>10</scanIntervalSeconds>
        <!-- 配置项目在容器中的根路径 -->
        <contextPath>${project.contextPath}</contextPath>
        <!-- 配置jetty容器中的jndi -->
        <jettyEnvXml>src/main/resources/jetty.xml</jettyEnvXml>
        <connectors>
            <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
                <!-- 端口 -->
                <port>${project.port}</port>
                <maxIdleTime>60000</maxIdleTime>
            </connector>
        </connectors>
        <!-- 按照官网上说的是配置停止容器的快捷键和端口,至今不知怎么在idea中如何使用,有知道的麻烦告知下,3Q -->
        <stopKey>foo</stopKey>
        <stopPort>8888</stopPort>
    </configuration>
    <executions>
        <!-- 配置在maven哪个生命周期执行插件的哪个动作 -->
        <execution>
            <id>jetty_run</id>
            <!-- maven生命周期 -->
            <phase>compile</phase>
            <!-- 执行插件的哪个动作 -->
            <goals><goal>run</goal></goals>
        </execution>
    </executions>
    <dependencies>
        <!-- 这个插件依赖的几个包 -->
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-io</artifactId>
            <version>7.6.6.v20120903</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-server</artifactId>
            <version>7.6.6.v20120903</version>
        </dependency>
    </dependencies>
</plugin>
image.gif
image.gif

jetty这个插件当时可是整的我头疼,各种报错各种上网找资料,附上jetty的配置文件:jetty.xml

<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
<Configure class="org.mortbay.jetty.webapp.WebAppContext">
    <New id="mysql" class="org.mortbay.jetty.plus.naming.Resource">
        <Arg>jdbc/core</Arg>
        <Arg>
            <New class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource">
                <Set name="Url">jdbc:mysql://localhost:3306/message</Set>
                <Set name="User">root</Set>
                <Set name="Password">123456</Set>
            </New>
        </Arg>
    </New>
</Configure>
image.gif
image.gif

6.cargo(可以启动tomcat,远程部署,本地部署,都支持的,这里我只用到本地部署,远程部署需要配置tomcat-user.xml和tomcat的控制台)

<plugin>
    <groupId>org.codehaus.cargo</groupId>
    <artifactId>cargo-maven2-plugin</artifactId>
    <version>1.4.3</version>
    <configuration>
        <container>
            <!-- tomcat的版本,tomcat6使用tomcat6x -->
            <containerId>${cargo.tomcat.version}</containerId>
            <!-- tomcat在本地的绝对路径 -->
            <home>${tomcat.home}</home>
            <!-- 本地安装就用installed,远程使用remote -->
            <type>installed</type>

            <!-- tomcat日志文件路径 -->
            <output>${tomcat.home}/logs/container.log</output>
            <append>false</append>
            <log>${tomcat.home}/logs/cargo.log</log>
        </container>
        <configuration>
            <!-- 本地部署,已存在 -->
            <type>existing</type>
            <!-- 再配置一次tomcat绝对路径 -->
            <home>${tomcat.home}</home>
            <properties>
                <!-- 端口 -->
                <cargo.servlet.port>${project.port}</cargo.servlet.port>
            </properties>
        </configuration>
        <!-- 这里一次可以部署多个项目 -->
        <deployables>
            <!-- 指定我部署的项目GAV -->
            <deployable>
                <groupId>com.message</groupId>
                <artifactId>message-test</artifactId>
                <!-- war包形式部署 -->
                <type>war</type>
                <properties>
                    <!-- 容器中的上下文根 -->
                    <context>${project.contextPath}</context>
                </properties>
            </deployable>
        </deployables>
    </configuration>
    <!-- 同jetty -->
    <executions>
        <execution>
            <id>tomcat-run</id>
            <phase>package</phase>
            <goals><goal>run</goal></goals>
        </execution>
    </executions>
</plugin>
image.gif
image.gif

tomcat使用cargo这个插件有个缺点,不能debug了,而且不是热部署,不知道cargo有没有热部署的功能,暂时我还没找到,待研究
jetty那个是可以热部署的,不管改Java类还是jsp或者css,js都可以(加减方法,改参数不行)

附上maven的properties

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <junit.version>4.10</junit.version>
    <spring.version>3.0.5.RELEASE</spring.version>
    <jdk.version>jdk15</jdk.version>
    <tomcat.version>6.0.32</tomcat.version>
    <message.war.name>message</message.war.name>
    <project.port>8099</project.port>
    <project.contextPath>/core</project.contextPath>
    <tomcat.home>F:\study\apache-tomcat-6.0.32</tomcat.home>
    <cargo.tomcat.version>tomcat6x</cargo.tomcat.version>
</properties>    
image.gif
image.gif
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,122评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,070评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,491评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,636评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,676评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,541评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,292评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,211评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,655评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,846评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,965评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,684评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,295评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,894评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,012评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,126评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,914评论 2 355

推荐阅读更多精彩内容