Maven 打jar ,instanll

本文详细介绍如何使用Maven创建并打包一个简单的Java接口工程,包括设置pom.xml配置文件、构建并安装到本地仓库的过程,最后演示了如何在另一个项目中引用此jar包。

一、序言

       有些情况下,我们需要将公共的工程,或者公共的接口打成jar,然后上传到公共仓库,让其他工程共用,这里我模拟dubbo 的,写一个简单接口工程,然后打成jar,让其他工程使用。

 

二、实践

      1.用idea 建立一个maven 工程,目录结构src->main->java

      2.在Java 下面建立一个接口 和一个静态类,并且作为java source ,表示我要让其他人调用

         

public interface HelloService {
    public void sayHello(String name);
}

    

public class HelloUtil {
    public static Integer add(int a,int b){
        return  a+b;
    }
}

 

    4.pom.xml 文件配置

       

<modelVersion>4.0.0</modelVersion>
    <groupId>com.demo</groupId>
    <artifactId>demo-interface</artifactId>
    <version>1.0</version>
    <packaging>jar</packaging>

    <!-- 编码 -->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <distributionManagement>
        <!-- 这是正式版 -->
        <repository>
            <id>nexus-releases</id>
            <name>Nexus Release Repository</name>
            <url>E:\maven-refrence</url>
        </repository>
        <!-- 测试版 -->
        <snapshotRepository>
            <id>nexus-snapshots</id>
            <name>Nexus Snapshot Repository</name>
            <url>E:\maven-refrence</url>
        </snapshotRepository>
    </distributionManagement>

 

    5.可以直接利用idea 的maven:jar 执行

    6.同时通过install 到仓库,我是测试因此放到本地仓库的。

      

mvn install:install-file -Dfile=E:\projects\demo-interface\target\demo-interface-1.0.jar -DgroupId=com.demo -DartifactId=demo-interface -Dversion=1.0 -Dpackaging=jar

 

    7.创建另外的工程demo2,然后在pom.xml 里面引用

    

<dependency>
            <groupId>com.demo</groupId>
            <artifactId>demo-interface</artifactId>
            <version>1.0</version>
        </dependency>

 

    8.写个mian 函数调用

    

   public static void main(String[] args) {
        System.out.println(HelloUtil.add(1,2));
    }

 

    注意,在执行过程中可能出现一些配置上的异常,也可能是跟新不及时等,多看看异常原因,或者删除从新来,搞搞总会好的~。~。

 

小结:

        1.上面是很基础的步骤,但是对于没使用过maven 的人来说,还是需要个参照物~。~

        2.关于打成jar 这种模式,不光是多处使用,还有个原因是因为项目复杂了,需要统一的配置管理,而且项目之间需要依赖,因此提炼公共部分,或者封装一部分实现,上面你只能调用,是看不到我的实现的,如果我不上传实现。同理在SOA 服务里面,这种操作很多。

使用 MavenJAR 包通常涉及在 `pom.xml` 文件中进行配置,下面详细介绍方法配置: ### 基本配置 在 `pom.xml` 中添加 `maven-jar-plugin` 插件,以下是一个基本的配置示例: ```xml <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.2.2</version> <configuration> <!-- 配置参数,如设置 JAR 文件的名称 --> <archive> <manifest> <!-- 设置主类,使 JAR 包可执行 --> <mainClass>com.example.MainClass</mainClass> </manifest> </archive> </configuration> </plugin> </plugins> </build> ``` 上述配置中,指定了 `maven-jar-plugin` 的版本,并且通过 `archive` 标签下的 `manifest` 标签设置了主类,这样生成的 JAR 包可以直接通过 `java -jar` 命令执行。 ### 自定义 JAR 包名称 可以通过 `finalName` 参数指定生成的 JAR 文件的名称: ```xml <configuration> <finalName>custom-jar-name</finalName> </configuration> ``` ### 包含或排除文件 使用 `includes` `excludes` 参数可以指定哪些文件需要包含在 JAR 包中,哪些文件需要排除: ```xml <configuration> <includes> <include>com/example/**</include> </includes> <excludes> <exclude>com/example/test/**</exclude> </excludes> </configuration> ``` ### 打包带有依赖的可执行 JAR 包 要打包带有依赖的可执行 JAR 包,可以使用 `maven-shade-plugin` 或 `maven-assembly-plugin` 等插件。以 `maven-shade-plugin` 为例,配置如下: ```xml <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.2.4</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>com.example.MainClass</mainClass> </transformer> </transformers> </configuration> </execution> </executions> </plugin> </plugins> </build> ``` 配置完成后,在项目根目录下执行 `mvn clean package` 命令,Maven 会调用相应的插件将项目打包成 JAR 文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值