`
liliang1222
  • 浏览: 158628 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

maven实例

阅读更多

1.simple weather项目介绍

maven权威指南中的例子,simple weather是一个基本的命令行驱动的应用程序,它接收邮政编码输入,然后从yahoo!weather RSS源取得数据,然后解析数据并把结果打印到标准输出

 

2.创建项目的基本框架

mvn archetype:create -DgroupId=org.sonatype.mavenbook.ch04 -
DartifactId=simple-weather -DpackageName=org.sonatype.mavenbook -Dversion=1.0

 

成功界面如下:


 

3.在pom.xml中添加组织,法律和开发人员信息

 

<licenses>
  	<license>
  		<name>Apache 2</name>
  		<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
  		<distribution>repo</distribution>
  		<comments>a business-friendly OSS license</comments>
  	</license>
  </licenses>
  
  <organization>
  	<name>Sonatype</name>
  	<url>http://www.sonatype.com</url>	
  </organization>
  
  <developers>
  	<developer>
  		<id>liang</id>
  		<name>li liang</name>
  		<roles>
  			<role>developer</role>
  		</roles>
  	</developer>
  	</developers>
 

4.在pom.xml中添加新的依赖

 

<dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
 
    <dependency>
    	<groupId>log4j</groupId>
    	<artifactId>log4j</artifactId>
    	<version>1.2.14</version>
    </dependency>
    
    <dependency>
    	<groupId>dom4j</groupId>
    	<artifactId>dom4j</artifactId>
    	<version>1.6.1</version>
    </dependency>
    
    <dependency>
    	<groupId>jaxen</groupId>
    	<artifactId>jaxen</artifactId>
    	<version>1.1.1</version>
    </dependency>
    
    <dependency>
    	<groupId>velocity</groupId>
    	<artifactId>velocity</artifactId>
    	<version>1.5</version>
    </dependency>
  </dependencies>

 5.项目源码

Main.java:系统入口

 

package org.sonatype.mavenbook.weather;

import java.io.InputStream;
import org.apache.log4j.PropertyConfigurator;

public class Main{
	public static void main(String[] args) throws Exception{
		PropertyConfigurator.configure(Main.class.getClassLoader()
				.getResource("log4j.properties"));
		int zipcode = 60202;
		try{
			zipcode = Integer.parseInt(args[0]);
		}catch(Exception e){}
		
		new Main(zipcode).start();
	}
	
	private int zip;
	
	public Main(int zip){
		this.zip = zip;
	}
	
	public void start() throws Exception{
		
		InputStream dataIn = new YahooRetriever().retrieve(zip);
		
		Weather weather = new YahooParser().parser(dataIn);
		
		System.out.println(new WeatherFormatter().format(weather));
	}
}
 

Weather.java:java bean

 

package org.sonatype.mavenbook.weather;

public class Weather{
	
	private String city;
	private String region;
	private String country;
	private String condition;
	private String temp;
	private String chill;
	private String humidity;
	public String getCity() {
		return city;
	}
	public void setCity(String city) {
		this.city = city;
	}
	public String getRegion() {
		return region;
	}
	public void setRegion(String region) {
		this.region = region;
	}
	public String getCountry() {
		return country;
	}
	public void setCountry(String country) {
		this.country = country;
	}
	public String getCondition() {
		return condition;
	}
	public void setCondition(String condition) {
		this.condition = condition;
	}
	public String getTemp() {
		return temp;
	}
	public void setTemp(String temp) {
		this.temp = temp;
	}
	public String getChill() {
		return chill;
	}
	public void setChill(String chill) {
		this.chill = chill;
	}
	public String getHumidity() {
		return humidity;
	}
	public void setHumidity(String humidity) {
		this.humidity = humidity;
	}
	
	
	
}

 YahooRetriever.java: 连接到Yahll!weather并返回来自数据源的InputStream

 

package org.sonatype.mavenbook.weather;

import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;

import org.apache.log4j.Logger;

public class YahooRetriever{
	private static Logger log = Logger.getLogger(YahooRetriever.class);
	
	public InputStream retrieve(int zipcode) throws Exception{
		log.info("retrieving weather data");
		String url="http://weather.yahooapis.com/forecastrss?p=" + zipcode;
		URLConnection conn = new URL(url).openConnection();
		return conn.getInputStream();
	}
}

 YahooParser.java:解析来自Yahoo!weather的XML,返回weather对象

 

package org.sonatype.mavenbook.weather;

import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.DocumentFactory;
import org.dom4j.io.SAXReader;

public class YahooParser{
	private static Logger log = Logger.getLogger(YahooParser.class);
	
	public Weather parser(InputStream inputStream) throws Exception{
		Weather weather = new Weather();
		
		log.info("creating XML Reader");
		SAXReader xmlReader = createXmlReader();
		Document doc = xmlReader.read(inputStream);
		
		log.info("Parsing XML Response");
		weather.setCity(doc.valueOf("/rss/channel/y:location/@city"));
		weather.setRegion(doc.valueOf("/rss/channel/y:location/@region"));
		weather.setCountry(doc.valueOf("/rss/channel/y:location/@country"));
		weather.setCondition(doc.valueOf("/rss/channel/item/y:condition/@text"));
		weather.setTemp(doc.valueOf("/rss/channel/item/y:condition/@temp"));
		weather.setChill(doc.valueOf("/rss/channel/y:wind/@chill"));
		weather.setHumidity(doc.valueOf("/rss/channel/y:atmosphere/@humidity"));

		return weather;
	}
	
	private SAXReader createXmlReader(){
		Map<String,String> uris = new HashMap<String,String>();
		uris.put("y", "http://xml.weather.yahoo.com/ns/rss/1.0");
		
		DocumentFactory factory = new DocumentFactory();
		factory.setXPathNamespaceURIs(uris);
		
		SAXReader xmlReader = new SAXReader();
		xmlReader.setDocumentFactory(factory);
		return xmlReader;
	}
}

 WeatherFormatter.java:接收weather对象,根据Velocity模板生成结果

 

package org.sonatype.mavenbook.weather;

import java.io.InputStreamReader;
import java.io.Reader;
import java.io.StringWriter;

import org.apache.log4j.Logger;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;


public class WeatherFormatter{
	private static Logger log = Logger.getLogger(WeatherFormatter.class);
	
	public String format(Weather weather) throws Exception{
		log.info("formatting weather data");
		
		Reader reader = new InputStreamReader(
				getClass().getClassLoader().getResourceAsStream("output.vm"));
		VelocityContext context = new VelocityContext();
		context.put("weather", weather);
		StringWriter writer = new StringWriter();
		Velocity.evaluate(context, writer, "", reader);
		return writer.toString();
	}
}

 6.添加配置信息

在src/main下建立resources目录,在里面建立log4j.properties和output.vm两个文件

log4j.properties

 

log4j.rootCategory=INFO,CONSOLE

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=INFO
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%-4r %-5p %c{1} %x - %m%n

 output.vm

 

***********************************
Current Weather Conditions for:
${weather.city},${weather.region},${weather.country}

Temperature:${weather.temp}
Condition:${weather.condition}
Humidity:${weather.humidity}
Wind Chill:${weather.chill}
***********************************
 

7.运行

 

mvn exec:java -Dexec.mainClass=org.sonatype.mavenbook.weather.Main

 运行结果


 

  • 大小: 114.4 KB
  • 大小: 105.3 KB
分享到:
评论

相关推荐

    myMaven实例

    【标题】"myMaven实例"是一个关于使用Maven构建项目的实际示例。Maven是Apache软件基金会开发的一款项目管理和综合工具,它基于项目对象模型(Project Object Model, POM),能够帮助Java开发者管理和构建他们的项目...

    maven实例应用(基于ssm框架)

    在"maven实例应用(基于ssm框架)"这个项目中,Maven扮演着关键角色,它将SSM组件集成到一个可运行的应用程序中。Maven通过在`pom.xml`文件中声明依赖,使得所有必要的库自动下载并组织到项目的类路径中。这极大简化...

    cxf spring maven 实例

    【标题】"CXF Spring Maven 实例"是一个关于如何整合并使用这些技术创建Web服务的教程。CXF是一个开源框架,主要用于构建和部署SOAP和RESTful Web服务,Spring则是一个广泛应用的Java企业级开发框架,而Maven是项目...

    JavaEE项目之SSM+Maven实例2源码包

    通过这个SSM+Maven实例,你可以学习到如何将这些组件组合起来,构建一个完整的JavaEE项目,理解各部分的作用,以及如何进行实际的开发和调试工作。这不仅有助于提升个人技能,也为团队协作和项目管理打下坚实基础。

    springmvc_hibernate maven 实例

    结合这三个技术,"springmvc_hibernate maven实例"可能是一个完整的Java Web项目示例,它演示了如何整合SpringMVC、Hibernate和Maven进行开发。项目中,SpringMVC负责处理HTTP请求和控制流程,Hibernate负责数据持久...

    springboot+maven实例

    在本项目中,"springboot+maven实例" 是一个基于Spring Boot和Maven技术栈的实战应用,旨在演示如何利用Java Persistence API (JPA) 实现数据持久化。Spring Boot简化了Spring应用的初始搭建以及配置过程,而Maven则...

    spring_redis maven实例

    Spring Redis Maven实例是一个非常实用的学习资源,特别适合那些想要了解如何在Java应用中集成和使用Redis作为缓存或数据存储的初学者。Redis是一个高性能的键值存储系统,而Spring框架则是Java开发中的常用工具,...

    Springboot多模块maven配置实例

    总的来说,"Springboot 多模块 maven 配置实例"旨在展示如何在Spring Boot项目中通过Maven进行模块化的管理,提高项目的可维护性和可扩展性。通过这样的方式,我们可以更好地组织代码,使得大型项目更加有序,同时也...

    Spring Security 新手入门级maven实例

    **Spring Security新手入门级Maven实例详解** Spring Security是一个强大且高度可定制的身份验证和访问控制框架,用于Java和Java EE应用。它为应用程序提供了全面的安全解决方案,包括用户认证、授权以及安全配置。...

    Spring MVC HelloWorld Maven实例

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

    quartz spring maven 实例

    在这个“quartz spring maven 实例”中,我们主要探讨如何在基于 Maven 的 Java 项目中集成 Quartz 和 Spring,以实现高效、灵活的定时任务调度。 首先,我们需要在项目的 `pom.xml` 文件中添加 Quartz 和 Spring ...

    spark-scala-maven实例

    基于spark的scala maven实例项目两个简单的统计实例,适合初学者了解。 /** * 第一步:创建Spark的配置对象SparkConf,设置Spark程序的运行时的配置信息, * 例如说通过setMaster来设置程序要链接的Spark集群的...

    springmvc+mybatis+maven实例可运行带数据库脚本

    【标题】"SpringMVC+MyBatis+Maven实例可运行带数据库脚本"是一个典型的Java Web项目架构,它整合了三个主流的开源框架,为开发者提供了快速开发Web应用的解决方案。 【SpringMVC】是Spring框架的一部分,主要用于...

    mybatis+spring+struts+maven实例

    mybatis+spring+struts+maven实例.

    gradle-maven-publish-plugin,gradle插件,配置一个uploadarchives任务,自动将所有java、kotlin或android库上载到任何maven实例。.zip

    Gradle插件,创建一个UploadArchives任务,自动将所有Java、Kotlin或Android库上载到任何Maven实例。这个插件基于chris-banes的初始实现,并且已经被增强以添加kotlin支持并跟上最新的更改。

    csf maven 实例

    【标题】"csf maven 实例"涉及的是在Java开发中使用Maven构建CXF Web服务的过程。CXF是一个开源服务框架,它允许开发者创建和部署SOAP和RESTful Web服务,而Maven则是一个项目管理和综合工具,帮助开发者管理项目...

    rabbitMQ Maven实例

    在这个“rabbitMQ Maven实例”中,我们将深入探讨如何使用Maven集成RabbitMQ到Java应用中。 首先,我们需要在`pom.xml`文件中添加RabbitMQ的客户端依赖。RabbitMQ提供了Java API,通过这个API我们可以创建连接、...

    SpringMVC+JPA+maven 实例

    这个实例结合SpringMVC、JPA和Maven,为开发者提供了一个完整的Web应用程序开发基础。通过实际操作,你可以学习到如何配置SpringMVC的DispatcherServlet、处理HTTP请求,理解如何使用JPA进行数据库操作,以及如何在...

    Dubbo+Spring+Maven实例

    这是Dubbo的例子,附件里面包括dubboDemoProvide和dubboDemoConsumer工程,此工程师maven工程,自动下载依赖的包,用eclipse导入即可运行,当然,前提是启动了zookeeper-3.4.5,至于如何启动zookeeper网上查资料。

    spring5.0_mvc_maven项目_HelloWorld实例

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

Global site tag (gtag.js) - Google Analytics