`
landmine
  • 浏览: 95199 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

maven2.0之resource包的问题

阅读更多

maven是一个java项目管理工具,深化了ant,但又有自己一整套的项目集成策略。目前的版本是2.0.2。

   1.

      maven网站 下载maven2,解压缩
   2.

      配置环境变量:maven_home、path
   3.

      cmd-> mvn --version 检查是否安装成功 [显示版本号,则说明安装成功]
   4.

      配置,Maven的配置分为三个层次:
          *

            - pom.xml:针对某个项目的配置
          *

            Installation
          *

            User -针对某个用户的配置

      我们首先配置主要是user级别的,主要包括两点:设置本地的资源库和代理服务器[如果需要的话] 在%maven_home%/conf/setting.xml中配置:

                          <localRepository>d:/repo</localRepository>

                          <proxy>
                              <id>proxy1</id>
                              <active>true</active>
                              <protocol>http</protocol>
                              <username></username>
                              <password></password>
                              <host>222.136.91.1</host>
                              <port>80</port>
                              <nonProxyHosts></nonProxyHosts>
                          </proxy>

      修改之后copy一份到${home}/.m2
   5.

      建立新的项目

                          mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app

          *

            首先,程序会从远程下载必要的jar包到你的localRepository,即我们刚刚设置的[d:/repo]
          *

            然后,会在当前目录下面生成my-app文件夹,包括简单的包结构[java,test]和一个HelloWorld程序及测试,以及pom.xml文件。

      注意:pom.xml contains the Project Object Model (POM) for this project.The POM is the basic unit of work in Maven。
   6.

      编译

      mvn compile

      第一次运行会下载很多jar包,而且机器负荷会很重。运行这个命令需要在pom.xml相同目录下面, 这个编译只编译主程序,不会编译test下面的程序。如果需要单独编译test,请运行:

      mvn test-compile

      compile之后会生成target文件夹,主程序编译在classes下面,测试程序放在test-classes下
   7.

      测试

      mvn test

      会自动先编译再运行测试
   8.

      打包

      mvn package

      打包之前会进行编译,测试
   9.

      安装

      mvn install

      会将package之后的jar包copy到
      <local-repository>/com/mycompany/app/my-app/1.0-SNAPSHOT/my-app-1.0-SNAPSHOT.jar
  10.

      其他

      mvn site

      注意,还可以:

      deploy site

      在pom.xml中加入

       <distributionManagement>
          <site>
            <id> website </id>
               < url> scp://www.mycompany.com/www/docs/project/ </url>
          </site>
        </distributionManagement>

      当然你需要设置server

      mvn site-deploy
      mvn clean
      mvn idea:idea [为IDE工具idea生成项目文件]

  11.

      Resource

      ${basedir}/src/main/resources都会编译到jar文件中,而且该目录下的内容将直接位于jar文件的顶部。

      测试用资源文件-> ${basedir}/src/test/resources,引用时如下例:

      InputStream is = getClass().getResourceAsStream( "/test.properties" );

      文件位于 ${basedir}/src/test/resources/test.properties。
  12.

      如何filter我们的资源文件

         < build >
           < resources >
             < resource >
               < directory > src/main/resources </ directory >
               < filtering > true </ filtering >
             </ resource >
           </ resources >
         </ build >

      因为原来默认的filter为false所以要加上上面的代码

      eg:我们在src/main/resources下面建立application.properties文件

      # application.properties
       application.name=${pom.name}
       application.version=${pom.version}

      运行:mvn process-resources 在target/classes下面的application.properties结果为:

       # application.properties
       application.name=Maven Quick Start Archetype
       application.version=1.0-SNAPSHOT

      这就是所谓的filter。当然filter还可以用其他的外部文件,不一定来自pom.xml[ ${pom.name} ]以及setting.xml[ ${settings.localRepository }]

      e.g src/main/filters/filter.properties:

      # filter.properties
       my.filter.value=hello!

      pom.xml:

       < build >
           < filters >
             < filter > src/main/filters/filter.properties </ filter >
           </ filters >
           < resources >
             < resource >
               < directory > src/main/resources </ directory >
               < filtering > true </ filtering >
             </ resource >
           </ resources >
         </ build > 

      # application.properties

      application.name=${pom.name}
      application.version=${pom.version}
      message=${my.filter.value}

      这样在运行mvn process-resources 会得到类似的效果,当然我们也可以直接在pom.xml中定义:

      < build >
           < resources >
             < resource >
               < directory > src/main/resources </ directory >
               < filtering > true </ filtering >
             </ resource >
           </ resources >
         </ build >
         < properties >
           < my .filter.value > hello </ my.filter.value >
         </ properties > 

      效果同样,这样就不需要外部文件了。另外filter还可以来自系统设置以及可以自定义:

      # application.properties
      java.version=${java.version}
      command.line.prop=${command.line.prop}

  13.

      jar包依赖

      我们在mvn install后在local repo中生成的jar包也可以被其他项目所引用

      <dependency>
            <groupId>com.mycompany.app</groupId>
            <artifactId>my-app</artifactId>
            <version>1.0-SNAPSHOT</version>
            <scope>compile</scope>
      </dependency>

      注意scope,这里是compile,如果使用junit,scope是test。

      举例说明:如果我们的project需要用到log4j包,那么我们可以 先google--"site:www.ibiblio.org maven2 log4j"。Index of /maven2/log4j/log4j 下面有maven-metadata.xml 描述了groupId,artifactId,version等等。获取了这些信息之后,你 就可以在pom.xml中添加依赖

      <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.12</version>
            <scope>compile</scope>
      </dependency>

  14.

      如何发布我的jar包到我的remote repository

      你需要在setting.xml中间设置server:

      <servers>
          <server>
            <id>mycompany-repository</id>
            <username>jvanzyl</username>
            <!-- Default value is ~/.ssh/id_dsa -->
           <privateKey>/path/to/identity</privateKey>
               <passphrase>my_key_passphrase</passphrase>
          </server>
      </servers>

      然后在pom.xml中设置远程url:

      <distributionManagement>
          <repository>
            <id>mycompany-repository</id>
            <name>MyCompany Repository</name>
           <url>scp://repository.mycompany.com/repository/maven2</url>
          </repository>
        </distributionManagement>

1.2. Maven2的Eclipse插件安装和使用
1.2.1. 安装

你可以从http://m2eclipse.codehaus.orgupdate安装Maven2的Eclipse插件,具体 安装步骤请看该网站提供的Flash Demo: http://m2eclipse.codehaus.org/Installing_Maven_2.0_plugin_for_Eclipse.html
1.2.2. 使用

该插件的使用请看该网站提供的Flash Demo: http://m2eclipse.codehaus.org/Maven_2.0_Plugin_for_Eclipse.html

关于openfan项目的Maven操作请参看后续章节。
1.3. 更多的Maven2的参考

    *

      Maven 网站
    *

分享到:
评论

相关推荐

    java实现oauth2.0服务端+客户端(含JWT)

    在这个Java实现中,我们利用了MAVEN作为项目管理工具和OLTU库来构建OAuth 2.0服务端和客户端。同时,数据加密采用了MD5算法,以增强安全性。 首先,OAuth 2.0的核心概念包括四个角色:资源所有者(Resource Owner)...

    OAuth2.0代码模拟实现

    OAuth2.0主要包括四个角色:资源所有者(User)、客户端(Client)、授权服务器(Authorization Server)和资源服务器(Resource Server)。流程大致如下: - 用户打开第三方应用并请求访问资源。 - 第三方应用...

    maven3配置文档

    创建新项目时,需指定完整的包路径、项目名称以及使用哪个archetype。最后,通过运行`mvn eclipse:eclipse`命令,你可以将项目转化为Eclipse项目,并在Eclipse中导入。 `pom.xml`文件是Maven项目的中心,它包含了...

    Maven实战.docx

    Maven 是一个项目管理和理解工具,最初由 Sonatype 开发,后被 Apache 软件基金会接收并成为其顶级项目之一。它通过一系列标准的过程来管理项目的构建、报告和文档等。Maven 的设计目标是为了让开发者用明确简洁的...

    Java的oauth2.0 服务端与客户端的实现(源码)

    在Java中实现OAuth 2.0,我们可以利用Spring Security OAuth2库,它提供了服务端(Authorization Server)和客户端(Resource Server)的支持。在提供的压缩包中,包含两个Maven项目,一个是`oauthserver`,代表了...

    oauth2.0.rar

    "resource_server"目录可能包含配置文件,使得资源服务器能够识别和验证OAuth2.0令牌。 MySQL数据库用于持久化客户端数据,如客户端ID、客户端密钥、授权范围等。"platform_base.sql"可能是数据库初始化脚本,包含...

    security+oauth2.0 四种模式实例,可直接运行.rar

    在"security+oauth2.0 四种模式实例"中,我们通常指的是OAuth2.0的四种核心授权模式:授权码模式(Authorization Code)、简化模式(Implicit)、密码模式(Resource Owner Password Credentials)和客户端凭证模式...

    Spring2.0(一)第一个Spring程序、IoC的应用

    同时,确保你的项目构建工具(如Maven或Gradle)中包含了Spring的相关依赖。 2. **创建Bean定义**:在Spring中,对象被称为“bean”,它们的配置通常在XML文件中完成。例如,创建一个名为`HelloWorld`的类,并在`...

    jedis.jar commons-pool2-2.0.jar

    如果你使用Maven或Gradle,可以在pom.xml或build.gradle文件中添加依赖。 2. **连接配置**:创建Jedis实例时,你需要提供Redis服务器的IP地址和端口号,例如: ```java Jedis jedis = new Jedis("localhost", 6379...

    opensaml-java-2.0-rc1-bin.zip

    首先,"opensaml-java-2.0-rc1-bin.zip"是一个包含OpenSAML 2.0 Release Candidate 1的二进制包,通常包含了编译后的Java类库、必要的配置文件和示例代码。这个版本是该库的一个重要里程碑,意味着它在正式发布之前...

    web平台调用hadoop集群2.0

    首先,Hadoop 2.0引入了YARN(Yet Another Resource Negotiator),这是一个资源管理器,负责分配集群中的计算和存储资源。相较于Hadoop 1.x,YARN将数据处理任务(MapReduce)与资源调度分离,提高了集群的灵活性和...

    scimono:SAP SCIMono是用于身份管理的SCIM 2.0行业标准的Java参考实现。 有关规范的更多信息,请访问

    开源SCIM 2.0客户端和服务器库。 描述 特征 SCIMono为提供SCIM v2 API提供了直接支持。 支持的功能: 完全符合SCIM v2 支持以下资源:用户,组,架构 资源分页(根据SCIM规范的要求基于索引,针对自定义方案基于ID...

    mgm-oss-jar-resource-bundle-1.zip

    标题 "mgm-oss-jar-resource-bundle-1.zip" 提示我们这可能是一个与MGM(可能是某个公司或项目的缩写)相关的开源项目,它涉及到OSS(对象存储服务)和资源包管理。资源包通常包含应用程序运行所需的各类文件,如...

    jersey所有jar包下载

    在实际使用中,开发者通常会将这些 jar 包添加到项目的类路径(ClassPath)中,或者如果使用的是 Maven 或 Gradle 这样的构建工具,可以通过在 pom.xml 或 build.gradle 文件中声明依赖来自动管理这些 jar 包。...

    portlet项目war包二

    portlet技术的核心是JSR 286(Portlet 2.0)标准,它定义了portlet的生命周期、API以及与门户服务器的交互方式。portlet的主要特点是能够与其他portlet共享页面,且具有独立的配置和渲染机制。portlet有多种类型,如...

    maven项目远程部署&&使用tomcat配置数据库连接的方法

    在进行Maven项目远程部署时,常常会遇到各种问题,特别是当项目中包含第三方jar包时。例如,当你试图使用mvn打包项目时,可能会遇到`dependencies.dependency.systemPath`的错误,这通常是因为Maven在打包过程中尝试...

    spring security + spring oauth2 +spring mvc SSO单点登录需要的最小jar包集合

    总的来说,实现Spring Security、Spring OAuth2和Spring MVC的SSO单点登录系统,需要对这些框架有深入理解,并正确配置相应的jar包或Maven/Gradle依赖。通过这个最小化集合,开发者可以快速搭建SSO环境,然后根据...

    java连接Redis所需jedis客户端包(jedis2.7+commons-pool2)

    标题中的"java连接Redis所需jedis客户端包(jedis2.7+commons-pool2)"指的是在Java环境中,为了实现与Redis数据库的交互,我们需要Jedis 2.7.2版本的jar包以及Apache Commons Pool 2.0版本的jar包。这两个包是连接...

Global site tag (gtag.js) - Google Analytics