• Java 版本
    • 获取源码
    • 准备环境
    • 开始编译
    • 常见问题
      • 1. maven 超时
      • 2. git-commit-id-plugin 错误
      • 3. 缺少 Premain-Class 属性

    Java 版本

    获取源码

    你可以使用 git 命令,也可以直接在 Github 下载 ZIP 包

    1. git clone https://github.com/baidu/openrasp.git

    准备环境

    为了保证最大兼容性,我们建议使用 JDK 6 进行编译

    • Java SE Development Kit 6u45
    • apache-maven 3.2.3

      开始编译

    • 方案1 - 使用 IDEA Intellij 进行操作

    导入 maven 工程,目录选 agent/java,正常编译即可

    • 方案2 - 使用 mvn 命令编译

    进入命令行,

    cd /agent/java
    mvn versions:use-latest-releases -Dincludes=com.baidu.openrasp:sqlparser
    mvn clean package

    最终生成的 JAR 包在 boot/target 和 engine/target 目录下,aka: $openrasp_path/agent/java/boot/target/rasp.jar和$openrasp_path/agent/java/engine/target/rasp.jar

    • 方案3 - 使用 build-java.sh 生成安装包

    如果你使用 Linux 进行编译,可以执行源代码目录下面的 build-java.sh 进行编译和打包操作。这个脚本会在源代码根目录,生成 rasp-java.tar.gz 和 rasp-java.zip 两个文件

    常见问题

    1. maven 超时

    如果总是出现超时错误,你可以考虑使用阿里云的镜像,参考这篇文章,修改 ~/.m2/settings.xml 即可

    [ERROR] Plugin org.apache.maven.plugins:maven-resources-plugin:3.0.2 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-resources-plugin:jar:3.0.2: Could not transfer artifact org.apache.maven.plugins:maven-resources-plugin:pom:3.0.2 from/to central (https://repo.maven.apache.org/maven2): Connect to repo.maven.apache.org:443 [repo.maven.apache.org/151.101.196.215] failed: Operation timed out (Connection timed out) -> [Help 1]

    2. git-commit-id-plugin 错误

    如果你使用 JDK 1.6 编译,可能会遇到如下错误:

    [ERROR] Plugin pl.project13.maven:git-commit-id-plugin:2.1.5 or one of its dependencies could not be resolved: Failed to read artifact descriptor for pl.project13.maven:git-commit-id-plugin:jar:2.1.5: Could not transfer artifact pl.project13.maven:git-commit-id-plugin:pom:2.1.5 from/to central (https://repo.maven.apache.org/maven2): Received fatal alert: protocol_version -> [Help 1]

    这是一个 https 证书错误,解决方法是替换 maven 仓库地址为 http 版本。可以考虑修改 ~/.m2/settings.xml,并添加如下内容

    1. <?xml version="1.0"?>
    2. <settings>
    3. <mirrors>
    4. <mirror>
    5. <id>central-no-ssl</id>
    6. <name>Central without ssl</name>
    7. <url>http://repo.maven.apache.org/maven2</url>
    8. <mirrorOf>central</mirrorOf>
    9. </mirror>
    10. </mirrors>
    11. </settings>

    3. 缺少 Premain-Class 属性

    如果你使用IDE编译,最终可能出现这样的错误:

    Failed to find Premain-Class manifest attribute in D:\apache-tomcat-7.0.82\rasp\rasp.jar

    这是因为IDE没有修改 META-INF 下面的文件。我们建议你使用 maven 编译,或者直接导入 maven 工程

    原文: https://rasp.baidu.com/doc/hacking/compile/java.html