- 浏览: 176993 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
Net19_Giry:
我是android项目。
利用eclipse wtp 生成web service client 端 -
Net19_Giry:
我按照file->new->other->w ...
利用eclipse wtp 生成web service client 端 -
草原阿Q:
((MyChartMouseListener) listene ...
jfreechart 对于鼠标事件响应的扩展 -
zzffzf:
zzffzf@yeah.net楼主麻烦发个例子谢谢,我也是找不 ...
利用struts2 springdm felix实现一个web应用 -
z_xiaodong7134:
非常感谢!博主
利用felix和struts2实现osgi web(三)
一个java工程中,一定会用的很多第三方的jar包。如何快速发布自己的工程和项目是一个需要掌握的技巧。maven是现在比较流行的项目管理工具。通过它的maven-jar-plugin和maven-assembly-plugin可以实现一个工程的快速自动发布。
我要进行发布的目标工程是一个osgi的插件工程,具有如下的特点:
1、通过org.tkxing.main.OptimizatorMain启动apache felix osgi框架和调用在felix osgi中发布的服务。
2、osgi的系统和业务bundle放在bundles目录中。
3、felix框架的配置文件放在conf目录中。
4、利用log4j作为系统的日志管理系统,配置文件log4j.xml放在项目根目录下。
希望通过maven完成的系统目录如下:
在完成的过程中,利用maven-jar-plugin和maven-assembly-plugin分成两步完成工程的发布。
1、生成org.tkxing.stock.test-1.0.jar
利用maven-jar-plugin生成这个可执行的jar包,需要完成两项的设置,一是jar包的main class,二是jar包利用其他jar的classpath,在pom文件中设置如下:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.3.1</version> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> <mainClass>org.tkxing.main.OptimizatorMain</mainClass> </manifest> </archive> </configuration> <executions> <execution> <phase>package</phase> </execution> </executions> </plugin>
其中的manifest标签中的内容,将会添加在生成的jar包的manifest.mf文件中。
2、装配整个工程
利用maven的maven-assembly-plugin来完成整个项目的装配工作,在pom文件中,设置装配的具体要求,利用assembly.xml文件定义:
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"> <id>jar-with-dependencies</id> <formats> <format>dir</format> </formats> <includeBaseDirectory>false</includeBaseDirectory> <dependencySets> <dependencySet> <useProjectArtifact>true</useProjectArtifact> <outputDirectory>/</outputDirectory> <includes> <include>org.tkxing.stock:org.tkxing.stock.test</include> </includes> </dependencySet> <dependencySet> <useProjectArtifact>false</useProjectArtifact> <outputDirectory>lib/</outputDirectory> <excludes> <exclude>org.springframework:spring-beans</exclude> <exclude>org.springframework:spring-asm</exclude> <exclude>org.springframework:spring-core</exclude> <exclude>org.springframework:spring-aop</exclude> <exclude>org.springframework:spring-context</exclude> <exclude>org.springframework:spring-expression</exclude> <exclude>org.springframework:spring-jms</exclude> <exclude>org.springframework:spring-tx</exclude> </excludes> </dependencySet> </dependencySets> <fileSets> <fileSet> <directory>conf</directory> <outputDirectory>conf</outputDirectory> </fileSet> <fileSet> <directory>bundles</directory> <outputDirectory>bundles</outputDirectory> </fileSet> </fileSets> <files> <file> <source>log4j.xml</source> <outputDirectory>/</outputDirectory> </file> </files> </assembly>
其中,formats部分,定义装配的结果是一个目录。
dependencySets部分中定义了两个dependencySet,第一个dependencySet的目的是把可运行的jar放在根目录下,利用的include选项;第二个dependencySet的目的是把所有依赖的jar包放在lib目录下,并利用excludes排除重复的jar包。
fileSets部分定义了把bundles和conf目录进行打包
files部分定义了打包log4j.xml文件。
通过以上两步,就完成了一个工程的打包。
完整的pom.xml文件如下所示:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.tkxing.stock</groupId> <artifactId>org.tkxing.stock</artifactId> <version>1.0</version> </parent> <artifactId>org.tkxing.stock.test</artifactId> <packaging>jar</packaging> <dependencies> <dependency> <groupId>com.googlecode</groupId> <artifactId>transloader</artifactId> <version>0.4</version> </dependency> <dependency> <groupId>org.tkxing.stock</groupId> <artifactId>org.tkxing.stock.dao.impl</artifactId> <version>1.0</version> </dependency> <dependency> <groupId>org.tkxing.stock</groupId> <artifactId>org.tkxing.stock.ruleengine.impl</artifactId> <version>1.0</version> </dependency> <dependency> <groupId>org.tkxing.stock</groupId> <artifactId>org.tkxing.stock.sourcedata.getter</artifactId> <version>1.0</version> </dependency> <dependency> <groupId>org.tkxing.stock</groupId> <artifactId>org.tkxing.stock.sourcedata.getter.impl</artifactId> <version>1.0</version> </dependency> <dependency> <groupId>org.tkxing.stock</groupId> <artifactId>org.tkxing.stock.sourcedata.disassemble</artifactId> <version>1.0</version> </dependency> <dependency> <groupId>org.tkxing.stock</groupId> <artifactId>org.tkxing.stock.sourcedata.disassemble.impl</artifactId> <version>1.0</version> </dependency> <dependency> <groupId>org.jboss.javassist</groupId> <artifactId>com.springsource.javassist</artifactId> <version>3.9.0.GA</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>com.springsource.org.hibernate</artifactId> <version>3.3.2.GA</version> </dependency> <dependency> <groupId>org.antlr</groupId> <artifactId>com.springsource.antlr</artifactId> <version>2.7.7</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>com.springsource.org.apache.commons.collections </artifactId> <version>3.2.0</version> </dependency> <dependency> <groupId>org.dom4j</groupId> <artifactId>com.springsource.org.dom4j</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>javax.xml.stream</groupId> <artifactId>com.springsource.javax.xml.stream</artifactId> <version>1.0.1</version> </dependency> <dependency> <groupId>org.objectweb.asm</groupId> <artifactId>com.springsource.org.objectweb.asm</artifactId> <version>1.5.3</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>com.springsource.slf4j.nop</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>javax.transaction</groupId> <artifactId>com.springsource.javax.transaction</artifactId> <version>1.1.0</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>com.springsource.org.apache.commons.dbcp</artifactId> <version>1.2.2.osgi</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>org.springframework.aspects</artifactId> <version>3.0.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>org.springframework.context.support</artifactId> <version>3.0.4.RELEASE</version> </dependency> <!-- <dependency> <groupId>org.aspectj</groupId> <artifactId>com.springsource.org.aspectj.weaver</artifactId> <version>1.6.8.RELEASE</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>com.springsource.org.aspectj.runtime</artifactId> <version>1.6.8.RELEASE</version> </dependency> --> <dependency> <groupId>com.sun.xml</groupId> <artifactId>com.springsource.com.sun.tools.xjc</artifactId> <version>2.1.7</version> </dependency> <dependency> <groupId>javax.activation</groupId> <artifactId>com.springsource.javax.activation</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>org.antlr</groupId> <artifactId>com.springsource.org.antlr.runtime</artifactId> <version>3.1.3</version> </dependency> <dependency> <groupId>com.thoughtworks.xstream</groupId> <artifactId>com.springsource.com.thoughtworks.xstream</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>org.mvel</groupId> <artifactId>mvel2</artifactId> <version>2.0.19</version> </dependency> <dependency> <groupId>net.sourceforge.jexcelapi</groupId> <artifactId>com.springsource.jxl</artifactId> <version>2.6.6</version> </dependency> <dependency> <groupId>org.tkxing.stock</groupId> <artifactId>org.tkxing.stock.sourcedata.intergration</artifactId> <version>1.0</version> <type>jar</type> <scope>compile</scope> </dependency> <dependency> <groupId>org.tkxing.stock</groupId> <artifactId>org.tkxing.stock.predict</artifactId> <version>1.0</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.tkxing.stock</groupId> <artifactId>org.tkxing.stock.predict.impl</artifactId> <version>1.0</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.tkxing.activemq</groupId> <artifactId>activemqengine</artifactId> <version>1.0</version> </dependency> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-core</artifactId> <version>5.5.0</version> <exclusions> <exclusion> <groupId>org.osgi</groupId> <artifactId>org.osgi.core</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.objectweb.howl</groupId> <artifactId>com.springsource.org.objectweb.howl</artifactId> <version>1.0.2</version> </dependency> </dependencies> <build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <compilerVersion>1.5</compilerVersion> <fork>true</fork> <source>1.5</source> <target>1.5</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.3.1</version> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> <mainClass>org.tkxing.main.OptimizatorMain</mainClass> </manifest> </archive> </configuration> <executions> <execution> <phase>package</phase> </execution> </executions> </plugin> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <descriptors> <descriptor>assembly.xml</descriptor> </descriptors> </configuration> <executions> <execution> <phase>install</phase> <goals> <goal>single</goal> </goals> <configuration> <outputDirectory>d:/temp/stock</outputDirectory> </configuration> </execution> </executions> </plugin> </plugins> </build> </project>
发表评论
-
eclipse中java工程转为web工程
2011-03-21 14:06 12741、修改项目的.project文件,保存,不记得是否需要重 ... -
windows XP上subversion trac apache 安装记录
2010-03-09 17:00 2297一个合适的项目管理的平台,对于项目管理非常重要,通过分析,发现 ... -
ant 调用cvs checkout和changelog的build文件
2009-10-18 23:41 2053配置文件如下: <?xml version=" ... -
maven 调用ant task的配置
2009-10-18 23:38 26781、在maven中调用ant的task,利用maven的ant ... -
maven2 cvs 设置
2009-10-13 09:52 1197<scm> <connection&g ... -
maven学习日记
2009-10-12 16:56 1443在看现在很多项目是 ...
相关推荐
空白的,经过单元测试的,mavenWeb项目
maven web项目 Demo
Maven 构建 项目 文档 java MyEclipse导入Maven项目及注意的事项
不习惯于maven项目开发,想使用eclipse的普通web项目。想借鉴别人的maven项目,但是自己使用的却不熟悉maven的原理等等,但是需要懂一点maven的目录架构。
hibernate+maven demo项目工程, 通过maven 动态加载类库 注释写法,xml写法都有
idea使用maven创建web项目详细教程
基于maven创建web项目 基础环境 Myeclipse2013 Tomcat8.0 Jdk1.8 apache-maven-3.3.9 环境配置
非maven springboot项目。搭建一个spring boot非maven项目,亲测没有问题
maven搭建web项目hello world
使用Maven整合Kafka 包括生产者,消费者 Kafka各种配置 //1.设置参数 Properties props = new Properties(); props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "81.68.232.188:9092,81.68.232.188:9093,81...
maven模块项目源码demo,eclipse导入maven项目即可。 整合spring+springmvc+mybatis。压缩包中包含项目整合说明。和打包说明。 新手学习,不足指出请指出~谢谢。
maven构建项目工程,简单构建方便,快速
springmvc+mybatis+maven完整项目代码,麻雀虽小,五脏俱全。该项目可以说是当前目前最主流,性价比最好的web框架了,也就是SSM框,下载后可直接导入eclipse运行,代码中还包含了mybatis自动生成配置文件。珍藏,忍痛...
个人博客《Spring MVC入门之构建到运行,超详细(利用Maven构建)》的项目代码
Eclipse新建和部署maven项目,每一步都有详细的截图
maven java项目实例,maven profile动态选择配置文件.txt
maven构建项目可以粘贴的内容
基于elasticjob的入门maven项目 基于elasticjob的入门maven项目 基于elasticjob的入门maven项目 基于elasticjob的入门maven项目 基于elasticjob的入门maven项目 基于elasticjob的入门maven项目 基于elasticjob的入门...
maven项目构建文档maven项目构建文档maven项目构建文档