`

hello maven

    博客分类:
  • java
阅读更多

创建项目

mvn archetype:create -DgroupId=org.jee.tool -DartifactId=jee-tool

创建org.jee.tool项目

 

如果报错提示archetype没找到,解决办法如下:

 

I kept getting an error about the maven-archetype-plugin whenever I tried to create a new application using maven 2. It turns out part of my local maven repository must have become corrupted or failed to download properly. It was solved by deleting .m2/repository/org/apache/maven and allowing maven to download all the required dependencies again.

 

创建子模块项目

cd org.jee.tool

mvn archetype:create -DgroupId=org.jee.tool -DartifactId=jee-local-cache

mvn archetype:create -DgroupId=org.jee.tool -DartifactId=jee-log

mvn archetype:create -DgroupId=org.jee.tool -DartifactId=jee-log-analyse

mvn archetype:create -DgroupId=org.jee.tool -DartifactId=jee-rpc

 

此时查看jee-tool/pom.xml,已经自动添加了<modules>的4个子项目模块。

 

创建eclipse项目文件

mvn eclipse:eclipse 生成eclipse所需文件

mvn eclipse:clean 删除eclipse配置文件

更多eclipse插件:http://maven.apache.org/plugins/maven-eclipse-plugin/

 

 

config plugin

plugin 类型:build plugin & report plugin

url:http://maven.apache.org/guides/mini/guide-configuring-plugins.html

 

插件编写:

 

/**
 * @goal query
 */
public class MyQueryMojo
    extends AbstractMojo
{
    /**
     * @parameter expression="${query.url}"
     */
    private String url;

    /**
     * @parameter default-value="60"
     */
    private int timeout;

    /**
     * @parameter
     */
    private String[] options;

    public void execute()
        throws MojoExecutionException
    {
        ...
    }
}

 

通过 <configuration/>配置参数:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-myquery-plugin</artifactId>
        <version>1.0</version>
        <configuration>
          <url>http://www.foobar.com/query</url>
          <timeout>10</timeout>
          <options>
            <option>one</option>
            <option>two</option>
            <option>three</option>
          </options>
        </configuration>
      </plugin>
    </plugins>
  </build>
  ...
</project>

 

通过参数配置

mvn myquery:query -Dquery.url=http://maven.apache.org

 

可以配置Collection,Class,Properties

 

 

使用executions能将插件插入到不同的build阶段

You can also configure a mojo using the <executions> tag. This is most commonly used for mojos that are intended to participate in some phases of the build lifecycle . Using MyQueryMojo as an example, you may have something that will look like:

<build>
    <plugins>
      <plugin>
        ...
        <executions>
          <execution>
            <id>execution1</id>
            <phase>test</phase>
            ...
          </execution>
          <execution>
            <id>execution2</id>
            <phase>install</phase>
            <configuration>
              <url>http://www.bar.com/query</url>
              <timeout>15</timeout>
              <options>
                <option>four</option>
                <option>five</option>
                <option>six</option>
              </options>
            </configuration>
            <goals>
              <goal>query</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

 

 

build lifecyle

  • validate - validate the project is correct and all necessary information is available
  • compile - compile the source code of the project
  • test - test the compiled source code using a suitable unit testing framework. These tests should not require the code be packaged or deployed
  • package - take the compiled code and package it in its distributable format, such as a JAR.
  • integration-test - process and deploy the package if necessary into an environment where integration tests can be run
  • verify - run any checks to verify the package is valid and meets quality criteria
  • install - install the package into the local repository, for use as a dependency in other projects locally
  • deploy - done in an integration or release environment, copies the final package to the remote repository for sharing with other developers and projects.

phase and goal

mvn clean dependency:copy-dependencies 

phase = clean

goal = dependency:copy-dependencies

 

结合plugin在不同周期执行ant命令:在validate阶段删除target下全部文件

<build>
		<plugins>
			<plugin>
				<artifactId>maven-antrun-plugin</artifactId>
				<executions>
					<execution>
						<phase>validate</phase>
						<goals>
							<goal>run</goal>
						</goals>
						<configuration>
							<tasks>
								<delete dir="${project.basedir}/target" />
							</tasks>
						</configuration>
					</execution>
				</executions>
			</plugin>
</plugins></build>

 

 

 

Building For Different Environments with Maven 2

使用antrun-plugin插件行进文件删除以及拷贝

 

以下profile id为deploy177,通过mvn install -Pdeploy177进行打包

 

 <profiles>
   <profile>
     <id>deploy177</id>
     <build>
       <plugins>
         <plugin>
           <artifactId>maven-antrun-plugin</artifactId>
           <executions>
             <execution>
               <phase>test</phase>
               <goals>
                 <goal>run</goal>
               </goals>
               <configuration>
                 <tasks>
                   <delete file="${project.build.outputDirectory}/environment.properties"/>
                   <copy file="src/main/resources/environment.test.properties"
                         tofile="${project.build.outputDirectory}/environment.properties"/>
                 </tasks>
               </configuration>
             </execution>
           </executions>
         </plugin>
         <plugin>
           <artifactId>maven-surefire-plugin</artifactId>
           <configuration>
             <skip>true</skip>
           </configuration>
         </plugin>
         <plugin>
           <artifactId>maven-jar-plugin</artifactId>
           <executions>
             <execution>
               <phase>package</phase>
               <goals>
                 <goal>jar</goal>
               </goals>
               <configuration>
                 <classifier>deploy177</classifier>
               </configuration>
             </execution>
           </executions>
         </plugin>
       </plugins>
     </build>
   </profile>

   .. Other profiles go here ..

 </profiles>

打包方式是war包的配置:

                                        <plugin>
						<artifactId>maven-war-plugin</artifactId>
						<executions>
							<execution>
								<phase>package</phase>
								<goals>
									<goal>war</goal>
								</goals>
								<configuration>
									<classifier>deploy177</classifier>
								</configuration>
							</execution>
						</executions>
					</plugin>

 

 

 

build war

见http://maven.apache.org/plugins/maven-war-plugin/usage.html

使用war plugin:

<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-war-plugin</artifactId>
				<version>2.0</version>
				<configuration>
					<webResources>
						<resource>
							<!--
								fund-web/fund-web-war/ this is relative to the pom.xml directory
							-->
							<directory>fund-web/fund-web-war/WebRoot</directory>
						</resource>
					</webResources>
				</configuration>
			</plugin>

 

 

结合yuicompressor压缩js和css

这段代码调试了很久,在maven里面执行总是出错。没有源码不好排查。最终是功能是实现了。但是这里的srcfile和targetfile是同一个文件,通过拷贝到overlay的war中进行修改。

<apply executable="java" parallel="false" failonerror="true"
	dest="${project.basedir}/WebRoot" append="false" force="true">
	<fileset dir="${project.basedir}/WebRoot">
		<include name="**/**.js" />
		<include name="**/**.css" />
	</fileset>
	<arg line="-jar" />
	<arg path="${project.basedir}/../lib/yuicompressor-2.4.2.jar" />
	<arg line="--charset utf-8" />
	<srcfile />
	<arg line="-o" />
	<mapper type="glob" from="*" to="*" />
	<targetfile />
</apply>

 

maven使用ant task的apply时有bug,以上配置跑出来结果srcfile和targetfile均在最后出现。 

 

 

使用overlay将不同文件打包

通过profile进行配置文件修改主要针对编译后的class的。无法满足压缩js和css的替换。

期待的打包方式是:开发人员开发css,js,本地运行无压缩版本。

打包时自动将css,js压缩打包。

 

maven提供overlay进行打包。

地址:http://maven.apache.org/plugins/maven-war-plugin/overlays.html

 

这个文档看了基本上一头雾水。

我花费了3个小时,终于把这个overlay实现了。请看此图:

overlay不是在自己的项目里面进行替换,而是需要新建一个pom,

 

依赖原有war

	<dependencies>
		<dependency>
			<groupId>com.tenpay.fund.web</groupId>
			<artifactId>fund-web-war</artifactId>
			<version>1.0</version>
			<classifier>deploy177</classifier>
			<type>war</type>
			<scope>runtime</scope>
		</dependency>
	</dependencies>

 

设置哪些需要include,哪些需要exclude:这是表示当前项目的文件是否覆盖原有的war内容

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-war-plugin</artifactId>
	<version>2.0</version>
	<configuration>
		<webResources>
			<resource>
				<directory>${project.basedir}/WebRoot</directory>
			</resource>
		</webResources>
		<warName>fund</warName>
		<dependentWarExcludes>**/*.js</dependentWarExcludes>
		<overlays>
			<overlay>
				<groupId>com.tenpay.fund.web</groupId>
				<artifactId>fund-web-war</artifactId>
				<classifier>deploy177</classifier>
				<excludes>
					<exclude>test.html</exclude>
				</excludes>
			</overlay>
		</overlays>
	</configuration>
</plugin>

 


 

通过tomcat-maven-plugin部署到服务器tomcat

1.配置maven\conf\settings.xml,在servers内添加测试服务器manager用户名密码

  <servers>
        <server>
          <id>f3_server</id>
          <username>admin</username>
          <password>admin</password>
        </server>
  </servers>

 



2.在war项目的pom文件添加tomcat-maven插件

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>tomcat-maven-plugin</artifactId>
    <configuration>
        <server>f3_server</server>
        <url>http://f3.tenpay.com/manager/html</url>
        <warFile>${project.basedir}/target/fund.war</warFile>
        <path>/fund</path>
    </configuration>
</plugin>

 


server对应setting.xml内配置
url对应manager的html
warFile对应生成的war文件
path对应部署的应用路径

3.运行tomcat插件
tomcat中不存在应用时运行mvn tomcat:deploy
tomcat中存在应用时运行mvn tomcat:redeploy



附录:
执行redeploy的部分输出:
[INFO] [war:war]
[INFO] Exploding webapp...
[INFO] Copy webapp webResources to D:\workspace\trunk_3\fund\fund-web\fund-w
[INFO] Copy webapp webResources to D:\workspace\trunk_3\fund\fund-web\fund-w
[INFO] Assembling webapp fund-war-compress in D:\workspace\trunk_3\fund\fund
[INFO] Expanding: D:\m2\repository\com\tenpay\fund\web\fund-web-war\1.0\fund
eb\fund-war-compress\target\war\work\fund-web-war-1.0
[INFO] Overlaying 1 war(s).
[INFO] Generating war D:\workspace\trunk_3\fund\fund-web\fund-war-compress\t
[INFO] Building war: D:\workspace\trunk_3\fund\fund-web\fund-war-compress\ta
[INFO] [tomcat:redeploy]
[INFO] Deploying war to http://f3.tenpay.com/fund
[INFO] OK - Undeployed application at context path /fund
[INFO] OK - Deployed application at context path /fund
[INFO] ---------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL

 

本地构建远程资源中心

 

	<distributionManagement>
		<repository>
			<id>tenpay-releases</id>
			<name>tenpay Release Repository</name>
			<url>http://10.6.208.112/nexus/content/repositories/releases/</url>
		</repository>
		<snapshotRepository>
			<id>tenpay-snapshots</id>
			<name>tenpay Snapshot Repository</name>
			<url>http://10.6.208.112/nexus/content/repositories/snapshots/</url>
		</snapshotRepository>
	</distributionManagement>
 

 

通过distributionManagement设置

 

 

 

 

 

 

  • 大小: 16.4 KB
  • ant.pdf (411.1 KB)
  • 下载次数: 3
分享到:
评论

相关推荐

    maven 简单示例+部署

    创建一个简单的Maven项目,首先你需要创建一个名为`hello`的目录,然后在其中创建`pom.xml`文件,内容如下: ```xml &lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=...

    Maven的HelloWorld程序

    **Maven的HelloWorld程序** 在Java开发领域,Maven是一个不可或缺的构建工具,它极大地简化了项目的构建、管理和依赖管理过程。对于初学者来说,理解并创建一个基本的Maven项目,例如“HelloWorld”程序,是入门的...

    maven3 的安装与配置

    return "Hello Maven......"; } public static void main(String[] args) { System.out.println(new HelloWorld().sayHello()); } } ``` 4. **运行Maven命令**: - `mvn clean compile`:清理`target`目录...

    Maven+SpringMVC的入门级HelloWorld实例

    在IT行业中,Maven和SpringMVC是两个非常重要的组件,它们分别是项目管理和Web应用程序开发的核心工具。Maven是一款强大的项目构建系统,它通过管理项目的依赖关系和构建生命周期,简化了Java开发流程。而SpringMVC...

    Spring MVC HelloWorld Maven实例

    **Spring MVC HelloWorld Maven实例** Spring MVC是Spring框架的一部分,它是一个用于构建Web应用程序的模型-视图-控制器(MVC)架构。在这个实例中,我们将深入理解如何使用Maven构建一个基本的“Hello, World!”...

    普通的IDEA maven java项目demo(hello word)-1.8

    标题中的“普通的IDEA maven java项目demo(hello word)-1.8”指的是一个基于IntelliJ IDEA的Java项目,使用Maven构建系统,并且是初学者级别的Hello World示例。这个项目可能是为了教授Java编程语言的基础知识,...

    maven整合spring案例

    &lt;title&gt;Hello Maven & Spring &lt;h1&gt;&lt;c:out value="${message}" /&gt; ``` ### 8. 运行与测试 在 IDE 中运行 Maven 项目,通过浏览器访问 `http://localhost:8080/`,你应该能看到 "Hello, Maven & Spring!" 的...

    EJB3 maven helloworld项目

    **EJB3 Maven HelloWorld项目详解** 企业级JavaBean(Enterprise JavaBeans,简称EJB)是Java平台上用于构建可部署在服务器端的企业级应用的核心技术之一。EJB3是EJB规范的一个重要版本,它极大地简化了开发过程,...

    Maven 3 入门 -- HelloWorld

    Maven 3 入门 -- HelloWorld Maven 是一个强大的项目管理工具,主要用于构建、管理和部署Java项目。在Java开发领域,Maven 已经成为标准的构建工具,它通过简化项目构建过程,使得开发者能够专注于代码本身,而不是...

    maven测试HelloWorld

    在本文中,我们将深入探讨如何使用Maven进行Java项目的构建和测试,以"HelloWorld"为例。Maven是一个强大的项目管理工具,它可以帮助开发者管理依赖、构建项目、执行测试,并生成文档,使得整个开发流程更加规范化和...

    Maven Hello world 程序 及 资源包

    通过这个Hello World示例,你可以学习到Spring的基本概念和Maven的项目构建流程,这对于进一步深入学习和使用这两个工具至关重要。同时,理解如何管理和维护Maven仓库也是每个Java开发者必备的技能。

    用Maven构建Struts2的HelloWorld

    在本教程中,我们将深入探讨如何使用Maven来构建一个基本的Struts2 HelloWorld应用。 首先,我们需要确保已经安装了Java Development Kit (JDK) 和 Maven。JDK是Java编程的基础,而Maven则用于构建和管理项目。在...

    maven_hello.zip

    【标题】"maven_hello.zip" 是一个包含 Maven 项目的压缩包,该项目主要用于构建一个名为 "maven_hello" 的 Web 应用程序。Maven 是一个强大的 Java 项目管理和综合工具,它可以帮助开发者管理依赖、构建项目以及...

    springmvc-maven-webapp-helloworld源码

    【标题】"springmvc-maven-webapp-helloworld源码"是一个基于Spring MVC、Maven、MyBatis等技术构建的简单 HelloWorld 示例应用。这个项目旨在为初学者提供一个基础的Web应用程序开发框架,帮助理解这些关键技术如何...

    Struts2 HelloWorld示例(Maven项目)

    这个“Struts2 HelloWorld示例”是一个基础的Maven项目,旨在帮助初学者理解如何在实际开发环境中设置和运行一个简单的Struts2应用。 首先,让我们了解Maven。Maven是一个项目管理工具,它通过使用一个项目对象模型...

    spring5.0_mvc_maven项目_HelloWorld实例

    在这个"HelloWorld"实例中,我们将深入探讨如何使用Spring 5.0 MVC和Maven构建一个基本的应用程序。 首先,让我们了解Spring MVC的核心组件: 1. **DispatcherServlet**:它是Spring MVC的前端控制器,负责接收...

    基于Maven的SpringBoot项目之Helloworld

    在本文中,我们将深入探讨如何基于Maven构建一个SpringBoot项目,并通过解决常见的导入问题来实现"Hello, World!"的应用。SpringBoot是一个流行的Java框架,它简化了Spring应用程序的开发,而Maven则是一个强大的...

    hello-maven.zip_IntelliJ IDEA_javaFx_javafx13_maven openjfx

    【标题】"hello-maven.zip" 是一个包含JavaFX 13与Maven集成的示例项目,适用于在IntelliJ IDEA开发环境中运行。这个压缩包旨在帮助开发者了解如何在现代Java开发中整合这两个关键工具。 【描述】"JavaFX 13 与...

    hello-maven.rar

    【标题】"hello-maven.rar" 是一个包含Maven工程的压缩文件,它演示了如何在Web应用程序中集成Spring、MyBatis和MySQL数据库来实现书籍管理系统的增删改查功能。 【描述】该工程旨在展示如何使用Maven构建一个Java ...

    RebbitMQ Hello World(maven项目+RebbitMQ jar包+RabbitMQ安装文件)

    RebbitMQ Hello World项目结合了Maven和RabbitMQ 3.6.6版本的jar包,为初学者提供了一个快速上手的起点。通过这个项目,你可以学习到如何配置Maven依赖,理解RabbitMQ的基本组件和工作原理,以及编写发送和接收消息...

Global site tag (gtag.js) - Google Analytics