voluble.googlecode.com jpa osgi融合系列学习之pom.xml

因为整个项目是用maven管理发布和部署的,下面是整个项目的部署配置文件pom.xml

maven在做其他项目的时候也用过,但是也只限于基本 的应用。

1.头部文件

xml文件都有自己的xml schemapom.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/maven-v4_0_0.xsd">

xmlns: xml文件的nameSpace,xmlns:xsi是该 文件的标识符。xsi:schemaLocation才是pom.xmlxml schema 

http://maven.apache.org/maven-v4_0_0.xsd 这个里面定义了pom.xml里面应用的每个标签的限制和格式。

http://maven.apache.org/POM/4.0.0    xml schema的命名空间 。


· mavenpom.xmlSchemad的一级目录展开信息如下

定义了只有一个元素project ,并且定义了Model之类的复杂类型。

  <?xml version="1.0"?>

- <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://maven.apache.org/POM/4.0.0" xmlns="http://maven.apache.org/POM/4.0.0">

+ <xs:element name="project" type="Model">

+ <xs:complexType name="Model">

+ <xs:complexType name="Contributor">

+ <xs:complexType name="Profile">

+ <xs:complexType name="Activation">

+ <xs:complexType name="ActivationFile">

+ <xs:complexType name="ActivationProperty">

+ <xs:complexType name="ActivationOS">

+ <xs:complexType name="DependencyManagement">

+ <xs:complexType name="Dependency">

+ <xs:complexType name="Exclusion">

+ <xs:complexType name="Reporting">

+ <xs:complexType name="ReportPlugin">

+ <xs:complexType name="ReportSet">

+ <xs:complexType name="BuildBase">

+ <xs:complexType name="Plugin">

+ <xs:complexType name="PluginExecution">

+ <xs:complexType name="PluginManagement">

+ <xs:complexType name="Resource">

+ <xs:complexType name="DistributionManagement">

+ <xs:complexType name="Site">

+ <xs:complexType name="Relocation">

+ <xs:complexType name="DeploymentRepository">

+ <xs:complexType name="Repository">

+ <xs:complexType name="RepositoryPolicy">

+ <xs:complexType name="MailingList">

+ <xs:complexType name="Build">

+ <xs:complexType name="Extension">

+ <xs:complexType name="IssueManagement">

+ <xs:complexType name="Parent">

+ <xs:complexType name="Prerequisites">

+ <xs:complexType name="CiManagement">

+ <xs:complexType name="Notifier">

+ <xs:complexType name="License">

+ <xs:complexType name="Developer">

+ <xs:complexType name="Scm">

+ <xs:complexType name="Organization">

  </xs:schema>


2.基本信息

     <modelVersion>4.0.0</modelVersion>
     <groupId>com.notehive.osgi</groupId>
     <artifactId>hibernate-samples</artifactId>
     <packaging>pom</packaging>
     <version>1.0.0.SNAPSHOT</version>
     <name>osgi 3rdparty</name>

POM包括了所有的项目信息。
maven 相关:
pom定义了最小的maven2元素集合,包括groupId,artifactId,version。

所有需要的元素 

· groupId:项目或者组织的唯 一标志,并且配置时生成的路径也是由此生成,如org.codehaus.mojo生成的相对路径为:/org/codehaus/mojo

· artifactId: 项目的通用名称

· version:项目的版本

· packaging: 打包的机制,如pom, jar, maven-plugin, ejb, war, ear, rar, par

· classifier: 分类

· Name:名称

3. 关系

Pom的关系:主要包含 合成 依赖 继承

合成:一个项目合成多个模块,如下所示。
     <modules>
         <module>provision</module>
         <module>jta</module>
         <module>hibernate-classes</module>
         <module>hsqldb</module>
         <module>hibernate-session</module>
         <module>model-a</module>
         <module>model-b</module>
         <module>application</module>
         <module>integration-tests</module>
         <module>deployment</module>
     </modules>

这些模块都是项目中的其他项目。

配置信息
     <properties>
         <spring.maven.artifact.version>
             2.5.4
         </spring.maven.artifact.version>
         <spring.dm.version>
             1.0.2
         </spring.dm.version>
     </properties>

这些配置是为了依赖里面的项目版本设置的。

依赖
    
     <dependencyManagement>   
         <dependencies>
             <dependency>
                 <groupId>org.eclipse</groupId>
                 <artifactId>osgi</artifactId>
                 <version>3.3.0-v20070530</version>   
             </dependency>

Org.eclipse osgi是依赖OSGi的核心jar包。

下面的依赖全部和Spring OSGi Frame work相关。


             <!-- BEGIN: Spring OSGi Framework -->
             <dependency>
                 <groupId>org.springframework.osgi</groupId>
                 <artifactId>spring-osgi-core</artifactId>
                 <version>${spring.dm.version}</version>
             </dependency>   
             <dependency>
                 <groupId>org.springframework.osgi</groupId>
                 <artifactId>spring-osgi-extender</artifactId>
                 <version>${spring.dm.version}</version>
             </dependency>   
             <dependency>
                 <groupId>org.springframework.osgi</groupId>
                 <artifactId>spring-osgi-io</artifactId>
                 <version>${spring.dm.version}</version>
             </dependency>   
             <dependency>
                 <groupId>org.springframework.osgi</groupId>
                 <artifactId>spring-osgi-mock</artifactId>
                 <version>${spring.dm.version}</version>
             </dependency>   
             <dependency>
                 <groupId>org.springframework.osgi</groupId>
                 <artifactId>spring-osgi-annotation</artifactId>
                 <version>${spring.dm.version}</version>
             </dependency>
             <dependency>
                 <groupId>org.springframework.osgi</groupId>
                 <artifactId>aopalliance.osgi</artifactId>
                 <version>1.0-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.springframework.osgi</groupId>
                 <artifactId>junit.osgi</artifactId>
                 <version>3.8.2-SNAPSHOT</version>
             </dependency>
             <dependency>
                 <groupId>org.springframework.osgi</groupId>
                 <artifactId>log4j.osgi</artifactId>
                 <version>1.2.15-SNAPSHOT</version>
             </dependency>
             <!-- END: Spring OSGi Framework -->

下面的依赖都是依赖Spring.
             <dependency>
                 <groupId>org.springframework</groupId>
                 <artifactId>spring-test</artifactId>
                 <version>${spring.maven.artifact.version}</version>
             </dependency>
             <dependency>
                 <groupId>org.springframework</groupId>
                 <artifactId>spring-aop</artifactId>
                 <version>${spring.maven.artifact.version}</version>
             </dependency>       
             <dependency>
                 <groupId>org.springframework</groupId>
                 <artifactId>spring-core</artifactId>
                 <version>${spring.maven.artifact.version}</version>
             </dependency>
             <dependency>
                 <groupId>org.springframework</groupId>
                 <artifactId>spring-context</artifactId>
                 <version>${spring.maven.artifact.version}</version>
             </dependency>
             <dependency>
                 <groupId>org.springframework</groupId>
                 <artifactId>spring-beans</artifactId>
                 <version>${spring.maven.artifact.version}</version>
             </dependency>
             <dependency>
                 <groupId>org.springframework</groupId>
                 <artifactId>spring-orm</artifactId>
                 <version>${spring.maven.artifact.version}</version>
             </dependency>
             <dependency>
                 <groupId>org.springframework</groupId>
                 <artifactId>spring-jdbc</artifactId>
                 <version>${spring.maven.artifact.version}</version>
             </dependency>
             <dependency>
                 <groupId>org.springframework</groupId>
                 <artifactId>spring-tx</artifactId>
                 <version>${spring.maven.artifact.version}</version>
             </dependency>
             <dependency>
                 <groupId>org.springframework</groupId>
                 <artifactId>spring-context-support</artifactId>
                 <version>${spring.maven.artifact.version}</version>
             </dependency>
         </dependencies>
     </dependencyManagement>   

编译部署
     <build>
         <plugins>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>

Maven的编译插件
                 <artifactId>maven-compiler-plugin</artifactId>
                 <configuration>

Configuration:指定插件配置
                     <source>1.5</source>
                     <target>1.5</target>
                 </configuration>
             </plugin>
             <plugin>
                 <groupId>org.apache.felix</groupId>
                 <artifactId>maven-bundle-plugin</artifactId>
                 <extensions>true</extensions>

Extensions:是否应用插件扩展
                 <version>1.4.0</version>
                 <configuration>
                     <instructions>
                         <manifestLocation>META-INF</manifestLocation>
                         <_include>-osgi.bnd</_include>

将jar文件转换为OSGi的bundle文件的插件工具Bnd的基本配置,是将osgi.bnd文件转换为OSGi的配置文件manifest
                     </instructions>
                 </configuration>
             </plugin>
         </plugins>
     </build>

仓库
     <repositories>
         <repository>
             <id>apache.m2.incubator</id>
             <name>Apache M2 Incubator Repository</name>
             <url>
                 http://people.apache.org/repo/m2-incubating-repository/
             </url>
         </repository>
         <repository>
             <id>eclipse-repository</id>
             <name>Eclipse Repository</name>
             <url>http://repo1.maven.org/eclipse/</url>
         </repository>
         <repository>
             <id>safehaus-repository</id>
             <name>Safehaus Repository</name>
             <url>http://m2.safehaus.org</url>
         </repository>
         <repository>
             <id>spring-ext</id>
             <name>Spring External Dependencies Repository</name>
             <url>
                 https://springframework.svn.sourceforge.net/svnroot/springframework/repos/repo-ext/
             </url>
         </repository>
         <repository>
             <id>i21-s3-osgi-repo</id>
             <name>i21 osgi artifacts repo</name>
             <snapshots>
                 <enabled>true</enabled>
             </snapshots>
             <url>
                 http://s3.amazonaws.com/maven.springframework.org/osgi
             </url>
         </repository>
         <repository>
             <id>i21-s3-maven-repo</id>
             <name>i21 S3 milestone repo</name>
             <url>
                 http://s3.amazonaws.com/maven.springframework.org/milestone
             </url>
         </repository>
         <repository>
             <id>ops4j-repo</id>
             <name>ops4j repo</name>
             <url>http://repository.ops4j.org/maven2/</url>
         </repository>
     </repositories>
     <pluginRepositories>
         <pluginRepository>
             <id>maven-repo</id>
             <name>maven repo</name>
             <url>http://repo1.maven.org/maven2/</url>
         </pluginRepository>

Maven的中心仓库
     </pluginRepositories>
      

 </project>

资料:

英文http://www.aqute.biz/Sales/OSGi 中文http://www.aqute.biz/Code/BndCn

http://osteching.com/node/7 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值