Ubuntu18.04编译log4j2-2.15.0

16 篇文章 0 订阅
2 篇文章 0 订阅

Ubuntu18.04编译Log4J2

背景

由于漏洞需要紧急修复,发现2.15.0版本代码已经合并,所以来编译一下,替换生产中使用的core-jar。

环境准备

jdk 8 / 9 / 11环境(忽略)
maven3.6+
git2.2+(忽略)

maven环境准备

ubuntu有apt install安装命令,可以直接使用,这里只讲下载bin文件,如何配置到系统环境中。

下载后解压,我以3.6.3版本介绍

1.解压

sudo tar -zxvf /tmp/apache-maven-3.6.3.tar.gz -C /opt/

为了更好地控制Maven版本和更新,我们将创建一个符号链接,该链接将指向安装目录:

sudo ln -s /opt/apache-maven-3.6.3 /opt/maven

2.配置环境变量

sudo vim /etc/profile.d/maven.sh

3.根据自己环境的情况添加以下内容:

export JAVA_HOME=/usr/local/jdk1.8.0_211
export M2_HOME=/opt/maven
export MAVEN_HOME=/opt/maven
export PATH=${M2_HOME}/bin:${PATH}

4.给脚本赋予可执行权限

sudo chmod +x /etc/profile.d/maven.sh

5.最后,让我们 加载环境变量 使用以下命令:

source /etc/profile.d/maven.sh

6.验证mvn安装情况

root@loyx04:/etc/profile.d# mvn -v

Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /opt/maven
Java version: 1.8.0_211, vendor: Oracle Corporation, runtime: /usr/local/jdk1.8.0_211/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "5.4.0-89-generic", arch: "amd64", family: "unix"

在这里插入图片描述

编译Log4j2

直接编译会遇到以下问题,因为我们使用的是jdk8环境,但是源码种API有做java9以上的支持,所以需要有java9环境,光有9还不够还需要jdk11。否则会报错

project log4j-perf: Cannot find matching toolchain definitions for the following toolchain types:
[ERROR] jdk [ version='[9, )' ]
[ERROR] jdk [ version='[11, )' ]

准备jdk9/11(省略)

将项目clone到本地,fork了官方项目,方便自己修改管理。

cd /home/impdatahd/software && git clone https://github.com/zhengkw/logging-log4j2

配置toolchains的xml文件

cd log4j-api-java9
cp ../toolchains-sample-linux.xml ../toolchains-sample-linux-9.xml

将其他chain删除,只保留9的,小心删除,标签对,很好检查!根据自己JDK9安装位置修改对应HOME目录
在这里插入图片描述

<toolchains>
  <!-- JDK toolchains -->
  <toolchain>
    <type>jdk</type>
    <provides>
      <version>9</version>
      <vendor>sun</vendor>
    </provides>
    <configuration>
            <jdkHome>/home/impdatahd/software/jdk-9.0.4</jdkHome>
    </configuration>
  </toolchain>
  <!-- other toolchains -->
</toolchains>

修改以后编译

#查看当前位置
pwd
/home/impdatahd/software/logging-log4j2/log4j-api-java9
#编译
mvn clean install -t ./toolchains-sample-linux-9.xml

编译成功后,回到上级目录。
在这里插入图片描述

如果回到项目根目录cd …,执行命令mvn install -Dmaven.test.skip=true依然报该错误,请执行以下命令

cp ./toolchains-sample-linux-9.xml ~/.m2/toolchains.xml
mvn install -Dmaven.test.skip=true

[ERROR] jdk [ version=’[11, )’ ]

在这里插入图片描述

编译一段时间后,会发现error提示,需要11以上版本,和之前9的操作一样,不过这次直接去xml里面修改。

vim ~/.m2/toolchains.xml
<toolchains>
  <!-- JDK toolchains -->
  <toolchain>
    <type>jdk</type>
    <provides>
      <version>9</version>
      <vendor>sun</vendor>
    </provides>
    <configuration>
            <jdkHome>/home/impdatahd/software/jdk-9.0.4</jdkHome>
    </configuration>
  </toolchain>
  <!-- other toolchains -->
    <toolchain>
    <type>jdk</type>
    <provides>
      <version>11</version>
      <vendor>sun</vendor>
    </provides>
    <configuration>
            <jdkHome>/home/impdatahd/software/jdk-11.0.13</jdkHome>
    </configuration>
  </toolchain>
</toolchains>

添加完后继续编译

mvn install -Dmaven.test.skip=true

在这里插入图片描述

编译后核心jar位置

编译后源码位置

cd /home/impdatahd/software/logging-log4j2/log4j-core/target

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值