maven打jar例子

 

maven打jar例子

分类: maven   18866人阅读  评论(1)  收藏  举报

1:创建名为:helloword的maven项目

2:/helloword/src/main/java下建立package包hello,在包下建类SayHello

package hello;

public class SayHello {

    public String sayhello() {
        System.out.println("hello............is anybody here...");
        return "dddddddddddddddddddddddddd";
    }

    public static void main(String[] arg) {
        System.out.println(new SayHello().sayhello());
    }
}
3:/helloword/src/test/java下建立test包,在test包下建HelloWordTest类

package test;

import hello.SayHello;
import junit.framework.Assert;
import junit.framework.TestCase;

public class HelloWordTest extends TestCase {

    public HelloWordTest(String name) {
        super(name);
    }
      protected void setUp() {                                         //进行初始化的任务
            
          }
    /**
     * @param args
     */
    public void testSayHello()
    {
        SayHello s = new SayHello();
        String r = s.sayhello();
        Assert.assertEquals("dddddddddddddddddddddddddd", r);
    }
}

4: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>
  <groupId>com.houwen.test</groupId>
  <artifactId>helloword</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>Maven Helloword</name>

<!--junit依赖是为tset准备,配置后,记得install,把依赖包嵌入resourse内,-->
   <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    </dependencies>
        <build>

<!--maven-shade-plugin

而要得到一个可以直接在命令行通过java命令运行的JAR文件,还要满足两个条件:
  JAR包中的/META-INF/MANIFEST.MF元数据文件必须包含Main-Class信息。

Maven有好几个插件能帮助用户完成上述任务,不过用起来最方便的还是maven-shade-plugin,它可以让用户配置Main-Class的值,然后在打包的时候将值填入/META-INF/MANIFEST.MF文件。关于项目的依赖,它很聪明地将依赖JAR文件全部解压后,再将得到的.class文件连同当前项目的.class文件一起合并到最终的CLI包中,这样,在执行CLI JAR文件的时候,所有需要的类就都在Classpath中了。下面是一个配置样例:

-->
        <plugins>
        <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-shade-plugin</artifactId>
           <version>1.2.1</version>
           <executions>
                      <execution>
               <phase>package</phase>
               <goals>
                     <goal>shade</goal>
               </goals>
               <configuration>
                     <transformers>
                       <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                        <mainClass>hello.SayHello</mainClass>
                      </transformer>
                     </transformers>
               </configuration>
                </execution>
           </executions>
        </plugin>
        </plugins>
    </build>
</project>


4.1上述例子中的,运行maven package后

我的Main-Class是hello.SayHello,构建完成后,对应于一个常规的helloword-0.0.1-SNAPSHOT.jar文件,我还得到了一个original-helloword-0.0.1-SNAPSHOT.jar文件。最后,我可以通过helloword-0.0.1-SNAPSHOT.jar命令运行程序。

4.2之后再运行maven install,把生成的jar打入到本地的maven仓库,可以在C:\Documents and Settings\hcen\.m2\repository\com\houwen\test\helloword\0.0.1-SNAPSHOT

找到helloword-0.0.1-SNAPSHOT.jar

5.最后,我可以通过java -jar   (jar包路径)/helloword-0.0.1-SNAPSHOT.jar命令运行程序。

版权声明:本文为博主原创文章,未经博主允许不得转载。


<think>嗯,用户想了解如何使用Maven打包生成JAR文件。我之前整理过一些引用资料,需要结合这些内容来回答。首先,用户的问题可能是一个刚接触Maven的新手,所以需要步骤清晰,详细但不过于复杂。 首先,引用[4]提到创建POM文件、编写代码,然后运行mvn package。这是基本流程。引用[1]指出默认打包生成的是普通的JAR,而可运行的JAR可能需要配置插件,比如maven-jar-plugin或者spring-boot-maven-plugin,具体要看项目类型。如果是普通Java项目,可能需要指定主类,而Spring Boot项目可能需要不同的插件配置。 然后,用户可能需要知道如何指定生成的JAR位置。引用[2]中的例子是用maven-antrun-plugin复制JAR到指定目录,这部分可以作为优化步骤,但可能对新手来说稍复杂,可以先放在后面作为可选配置。 另外,引用[3]提到了编译插件的配置,设置Java版本为1.8,这也是常见的配置,需要在pom.xml中添加。所以步骤里应该包含这部分内容。 用户可能还会遇到依赖问题,比如生成包含依赖的JAR。这时候需要用到maven-assembly-plugin或maven-shade-plugin,这些在引用中没有详细提到,但根据我的知识,补充进去会有帮助,比如如何配置主类和依赖打包。 需要分步骤说明:创建项目结构、配置pom.xml、执行打包命令。每个步骤给出示例代码,比如pom.xml中的插件配置。还要提到如何运行生成的JAR文件,比如java -jar命令。 最后,相关问题部分可以根据引用内容扩展,比如如何修改打包类型、调整输出目录、处理依赖等。用户可能后续会关心这些优化点,所以提前准备相关问题可以帮他们深入学习。 检查是否需要区分普通JAR和可执行JAR,引用[1]提到默认是普通JAR,可执行的需要插件。所以回答中要明确两种情况的配置方法。同时,注意是否需要处理资源文件,但可能基础教程暂时不需要涉及,保持简单。 还要确保LaTeX格式正确,比如代码块用反引号包裹,独立公式用$$...$$,但问题中没有数学公式,可能不需要处理。但用户可能有其他数学内容的需求,不过当前问题集中在Maven打包,所以可能不用数学表达式。 总结回答结构:分步骤教程,基本配置,常用插件,运行方法,优化技巧,相关问题。确保每个部分都有引用支持,比如引用[1]、[2]、[3]、[4]中的内容,并在适当的位置添加引用标识。</think>### 如何使用Maven打包生成JAR文件 #### 1. 基本项目结构 Maven项目需要遵循标准目录结构: ``` 项目根目录 ├── src │ ├── main │ │ ├── java # Java源代码 │ │ └── resources # 配置文件 │ └── test # 测试代码 └── pom.xml # 项目配置文件 ``` #### 2. 配置pom.xml文件 ```xml <project> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>demo</artifactId> <version>1.0.0</version> <!-- 指定打包类型(默认就是jar)[^1] --> <packaging>jar</packaging> <!-- 配置Java版本 --> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> </project> ``` #### 3. 生成普通JAR(仅编译结果) 在项目根目录执行命令: ```bash mvn clean package ``` 生成的JAR文件位于`target/`目录,名称格式为`artifactId-version.jar`[^1][^4]。 #### 4. 生成可执行JAR(含主类配置) 在`pom.xml`中添加: ```xml <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.3.0</version> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <mainClass>com.example.Main</mainClass> <!-- 指定主类 --> </manifest> </archive> </configuration> </plugin> </plugins> </build> ``` #### 5. 调整JAR输出目录(可选) 使用`maven-antrun-plugin`将JAR复制到指定目录[^2]: ```xml <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <executions> <execution> <phase>package</phase> <configuration> <tasks> <copy file="target/${project.build.finalName}.jar" todir="C:/deploy-jars"/> </tasks> </configuration> <goals><goal>run</goal></goals> </execution> </executions> </plugin> ``` #### 6. 运行JAR文件 ```bash java -jar target/demo-1.0.0.jar ``` ### 常见问题处理 1. **依赖包未包含**: 使用`maven-assembly-plugin`生成包含依赖的JAR: ```xml <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>com.example.Main</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </plugin> ``` 2. **Spring Boot项目打包**: 使用`spring-boot-maven-plugin`生成可执行JAR[^4]: ```xml <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值