maven 导 工具类jar包

举报
mieuf 发表于 2018/10/31 16:41:08 2018/10/31
【摘要】 在项目中经常有比较多的工具类方法,每次使用的时候都是要打开多个项目去找对应的工具方法,或者去网上搜索,太费事,不如自己整个jar包,导入到maven库,即能重复使用,又避免了复制代码。(导jar包里面有个坑,也可能是因为我菜,没有很快找到解决方法)1.new project2.之后如图3.指定groupId 和artifactId以及版本 next4.指定项目名称以及存储位置。pom 文件<...

在项目中经常有比较多的工具类方法,每次使用的时候都是要打开多个项目去找对应的工具方法,或者去网上搜索,太费事,不如自己整个jar包,导入到maven库,即能重复使用,又避免了复制代码。(导jar包里面有个坑,也可能是因为我菜,没有很快找到解决方法)

1.new project
2.之后如图

3.指定groupId 和artifactId以及版本 next
4.指定项目名称以及存储位置。
pom 文件

<?xml version="1.0" encoding="UTF-8"?><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.abc</groupId>
    <artifactId>framework</artifactId>
    <version>0.0.1</version>
    <packaging>jar</packaging>

    <name>framework-auto</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <!--<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
        </dependency>-->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <useUniqueVersions>false</useUniqueVersions>
                            <classpathPrefix>lib/</classpathPrefix>
                            <mainClass>入口类package.有main方法的类</mainClass>
                        </manifest>
                        <manifestEntries>
                            <version>0.0.1</version>
                        </manifestEntries>
                    </archive>
                </configuration>
            </plugin>
        	</plugins>
         </build></project>

之后是入口类:

public class Main {
    public static void main(String[] args) {
        System.out.println("hello jar");
    }}

然后是工具类,因为多数项目都是spring boot类型的就是使用注解写了一个例子,并从配置中取值。

import org.apache.commons.lang3.StringUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.Configuration;import java.net.Inet4Address;import java.net.InetAddress;import java.net.NetworkInterface;import java.util.Enumeration;import java.util.HashMap;import java.util.Map;@ConfigurationProperties(prefix = "sms")@Configurationpublic class SmsSendUtil {

    private static final Logger logger = LoggerFactory.getLogger(SmsSendUtil.class);

    private String appKey;

    public String getAppKey() {
        return appKey;
    }

    public void setAppKey(String appKey) {
        this.appKey = appKey;
    }

    /**
     * 获取主机ip
     * @return
     * @throws Exception
     */
    public String getIpAddress() throws Exception{
        if (StringUtils.isBlank(appKey)){
            throw new Exception("没有配置sms.appKey");
        }
        Enumeration allNetInterfaces = NetworkInterface.getNetworkInterfaces();
        while (allNetInterfaces.hasMoreElements()){
            NetworkInterface netInterface = (NetworkInterface) allNetInterfaces.nextElement();//            System.out.println(netInterface.getName());
            Enumeration addresses = netInterface.getInetAddresses();
            InetAddress ip = null;
            while (addresses.hasMoreElements()){
                ip = (InetAddress) addresses.nextElement();
                if (ip != null && ip instanceof Inet4Address){
                    //剔除 127.0.0.1 和作为网关的.1 地址
                    if (!ip.getHostAddress().startsWith("127") && !ip.getHostAddress().endsWith(".1")){
                        return ip.getHostAddress();
                    }
                }
            }
        }
        return "";
    }}

之后是(双击666)
在这里插入图片描述

最后执行mvn install 命令,把生成的jar导入到本地库中。

引用时在pom文件中加入

<dependency>
    <groupId>com.abc</groupId>
    <artifactId>framework</artifactId>
    <version>0.0.1</version></dependency>

测试类:

@RestController@RequestMapping("/test")public class TestContrller {


    @Resource
    private CoreProperties coreProperties;
    @Resource
    private SmsSendUtil smsSendUtil;


    @RequestMapping(value = {"/",""})
    public String hellTask() throws Exception {
        String userName = coreProperties.getAppKey();
        System.out.println("========================================");
        String ipAddress = smsSendUtil.getIpAddress();
        return "hello " + userName + "ip" + ipAddress;
    }}

application.properties

sms.appKey=ajlfjafl

(主要的坑在pom文件,导出了好几次都是没有依赖包,调用工具类方法时,直接报类找不到异常)


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。