浙江省高等学校教师教育理论培训

微信搜索“毛凌志岗前心得”小程序

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

maven如何创建JAR以及把它安装到本地库中_我心飞扬_百度空间

maven如何创建JAR以及把它安装到本地库中
2008年02月26日 星期二 10:39

2.5.如何创建JAR以及把它安装到本地库中?

执行以下命令:

mvn package

如果你看以下项目的POM,你可以注意到packaging元素被设置为jar。这让maven知道从以上命令产生一个jar文件。在${basedir}/target目录下,产生了一个jar文件。

现在,你想将产生的jar文件安装到你的本地库中(~/.m2/repository是默认的位置)。想了解库的更多信息,请参考《库介绍》。执行以下命令,就能安装到本地库:

mvn install

执行过程中会产生如下输出:

[INFO] ----------------------------------------------------------------------------

[INFO] Building Maven Quick Start Archetype

[INFO]    task-segment: [install]

[INFO] ----------------------------------------------------------------------------

[INFO] [resources:resources]

[INFO] [compiler:compile]

Compiling 1 source file to <dir>/my-app/target/classes

[INFO] [resources:testResources]

[INFO] [compiler:testCompile]

Compiling 1 source file to <dir>/my-app/target/test-classes

[INFO] [surefire:test]

[INFO] Setting reports dir: <dir>/my-app/target/surefire-reports

-------------------------------------------------------

T E S T S

-------------------------------------------------------

[surefire] Running com.mycompany.app.AppTest

[surefire] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.001 sec

Results :

[surefire] Tests run: 1, Failures: 0, Errors: 0

[INFO] [jar:jar]

[INFO] Building jar: <dir>/my-app/target/my-app-1.0-SNAPSHOT.jar

[INFO] [install:install]

[INFO] Installing <dir>/my-app/target/my-app-1.0-SNAPSHOT.jar to <local-repository>/com/mycompany/app/my-app/1.0-SNAPSHOT/my-app-1.0-SNAPSHOT.jar

[INFO] ----------------------------------------------------------------------------

[INFO] BUILD SUCCESSFUL

[INFO] ----------------------------------------------------------------------------

[INFO] Total time: 5 seconds

[INFO] Finished at: Tue Oct 04 13:20:32 GMT-05:00 2005

[INFO] Final Memory: 3M/8M

[INFO] ----------------------------------------------------------------------------

注意执行测试的surefire插件,它会按命名规则查找所有的测试文件,默认情况下,测试文件包括:

Ø       **/*Test.java

Ø       **/Test*.java

Ø       **/*TestCase.jave

默认情况下,被排除的:

Ø       **/Abstract*Test.java

Ø       **/Abstract*TestCase.jave

到目前为止,已经经历了安装、构建、测试、打包、安装典型的maven项目等步骤。这可能是大多数项目使用maven需要经历的步骤,而驱动的项目模型文件只有18行内容,对比典型的build文件,它的行数比pom多的多。

不需任何附加工作maven依靠此POM就可以为你的项目产生一个网站,你只须定制你的maven网站,如果时间紧迫,你只须执行以下命令:

mvn site

还有许多goals可以执行,比如

mvn clean

此命令删除target目录。

可能你需要为你的项目产生一个IntelliJ IDEA 描述符,执行以下命令:

mvn idea:idea

2.6.如何使用插件?

Maven 1.0用户注意:在Maven 1.0中,你可能必须加入一些譬如preGoal到maven.xml中,以及project.properties的一些入口中。这里有些不同,比如, 我们配置java编译器,以允许编译jdk 5.0的源码,这只要简单的在你的POM中加入:

.

<build>

<plugins>

    <plugin>

      <groupId>org.apache.maven.plugins</groupId>

      <artifactId>maven-compiler-plugin</artifactId>

      <configuration>

        <source>1.5</source>

        <target>1.5</target>

      </configuration>

    </plugin>

</plugins>

</build>

.

.

maven2.0中,所有的插件看起来更像依赖项,并且某些方面确实就是依赖项。这个插件(包含特定的版本,如果指定的话,否则使用最新版本)将被自动下载并使用。

Configuration元素用来对编译插件的每个goal提供参数。具体请参考《插件列表》、《构建生命周期介绍》。

2.7.如何在jar文件中加入资源?

在示例应用程序中,增加目录${basedir}/src/main/resources,我们把资源文件放入此目录。任何在${basedir}/src/main/resources目录中的文件和目录都将被打包到jar文件中。

my-app

|-- pom.xml

`-- src

    |-- main

    |   |-- java

    |   |   `-- com

    |   |       `-- mycompany

    |   |           `-- app

    |   |               `-- App.java

    |   `-- resources

    |       `-- META-INF

    |           `-- application.properties

    `-- test

        `-- java

            `-- com

                `-- mycompany

                    `-- app

                        `-- AppTest.java

在这个例子中,我们在${basedir}/src/main/resources目录下放了一个META-INF目录并在META-INF目录中放了一个application.properties文件。如果你将jar文件解压,可以看到以下内容:

|-- META-INF

|   |-- MANIFEST.MF

|   |-- application.properties

|   `-- maven

|       `-- com.mycompany.app

|           `-- my-app

|               |-- pom.properties

|               `-- pom.xml

`-- com

    `-- mycompany

        `-- app

            `-- App.class

就像你看到的那样,${basedir}/src /main/resources中的内容在jar文件的起始位置,我们的application.properties文件在META-INF目录下。同 时,一些其他文件如META-INF/MANIFEST.MF,以及pom.xml和pom.properties文件也在其中,对于maven产生的 jar文件来说,这是maven的标准行为。你可以自行创建自己的manifest,不过如果你不指定,maven会产生一个默认的。由于pom.xml 和pom.properties文件都被打包到jar文件中,所以maven产生的产品都是自描述的,一个简单的应用就是获得应用程序版本。打开POM文 件可能需要一些maven的工具,但打开属性文件可以使用标准的java API来做到,属性文件pom.properties如下所示:

#Generated by Maven

#Tue Oct 04 15:43:21 GMT-05:00 2005

version=1.0-SNAPSHOT

groupId=com.mycompany.app

artifactId=my-app

为了单元测试,可能需要把资源加入到classpath,你可以遵照同样的模式:

my-app

|-- pom.xml

`-- src

    |-- main

    |   |-- java

    |   |   `-- com

    |   |       `-- mycompany

    |   |           `-- app

    |   |               `-- App.java

    |   `-- resources

    |       `-- META-INF

    |           |-- application.properties

    `-- test

        |-- java

        |   `-- com

        |       `-- mycompany

        |           `-- app

        |               `-- AppTest.java

        `-- resources

            `-- test.properties

那么在测试代码中,只须使用如下代码就可访问这些资源:

...

// Retrieve resource

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

// Do something with the resource

posted on 2012-03-13 17:18  lexus  阅读(266)  评论(0编辑  收藏  举报