加强与 Maven 的集成 - 安装
Posted
技术标签:
【中文标题】加强与 Maven 的集成 - 安装【英文标题】:Fortify integration with Maven - install 【发布时间】:2015-10-24 15:29:27 【问题描述】:我想对 Maven Eclipse 项目运行 Fortify 扫描。
我应该从哪里开始?
我知道我需要更新我的pom.xml
文件以包含 Fortify 插件,但是我是否还需要在我的计算机上安装 Fortify SCA? (我正在运行 MacOS X)。我一直在寻找下载 Fortify SCA 的地方,但一直找不到。
如果有人可以分享一些链接,为我指明正确的方向以完成设置,我将不胜感激。
【问题讨论】:
您可以下载 Fortify 的唯一地方是 HP 门户 (softwaresupport.hp.com)。这是关于如何使用 Fortify 的 maven 插件的另一篇文章:***.com/questions/29742146/… 【参考方案1】:其实不需要配置文件,只需要插件配置。
<build>
<plugins>
<plugin>
<groupId>com.fortify.ps.maven.plugin</groupId>
<artifactId>sca-maven-plugin</artifactId>
<version>4.30</version>
<configuration>
<findbugs>true</findbugs>
<htmlReport>true</htmlReport>
<maxHeap>800M</maxHeap>
<source>myJavaVersion</source>
<buildId>myBuildId</buildId>
<verbose>true</verbose>
<skipTests>true</skipTests>
<toplevelArtifactId>myTopLevelId</toplevelArtifactId>
</configuration>
</plugin>
</plugins>
</build>
通过使用单个 Jenkins 作业,您可以在前一步编写一个 shell 脚本:
mvn clean sca:clean -DskipTests
mvn sca:translate -DskipTests
然后将实际的“目标和选项”定义为:
install sca:scan -DskipTests
将它们作为单独的命令行是在一个 Jenkins 作业中完成 sca-clean、翻译和扫描(并将报告文件发送到 Fortify)的唯一方法。
希望这对你也有用!
【讨论】:
您是如何得出它们需要单独的命令的结论的?我正在 Jenkins 工作中执行 Maven 目标clean sca:clean sca:translate sca:scan
,它工作得很好......
没有具体原因,只是它对我的工作方式,当单行命令没有完成工作时。【参考方案2】:
我认为不需要安装 Fortify,但是没有它很难获得 maven sca 插件。如果您安装在另一台机器上,您可以只复制该插件,但您不会让 Audit Workbench 应用程序与生成的 FPR 一起工作。正如@Eric 所说,您必须通过 HP 获得它,并且没有许可证将无法使用。
安装完成后,将配置文件添加到 pom.xml 以执行 sca 目标:
<profile>
<id>sca-clean</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>com.fortify.ps.maven.plugin</groupId>
<artifactId>sca-maven-plugin</artifactId>
<version>4.30</version>
<configuration>
<jre64>true</jre64>
<buildId>myproject</buildId>
<toplevelArtifactId>myproject.parent</toplevelArtifactId>
<skipTests>true</skipTests>
</configuration>
<executions>
<execution>
<goals>
<goal>clean</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>sca-translate</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>com.fortify.ps.maven.plugin</groupId>
<artifactId>sca-maven-plugin</artifactId>
<version>4.30</version>
<configuration>
<jre64>true</jre64>
<jreStack>8M</jreStack>
<maxHeap>12000M</maxHeap>
<verbose>true</verbose>
<buildId>myproject</buildId>
<toplevelArtifactId>myproject.parent</toplevelArtifactId>
<skipTests>true</skipTests>
<failOnSCAError>true</failOnSCAError>
</configuration>
<executions>
<execution>
<goals>
<goal>translate</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>sca-scan</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>com.fortify.ps.maven.plugin</groupId>
<artifactId>sca-maven-plugin</artifactId>
<version>4.30</version>
<configuration>
<jre64>true</jre64>
<jreStack>8M</jreStack>
<maxHeap>12000M</maxHeap>
<verbose>true</verbose>
<buildId>myproject</buildId>
<toplevelArtifactId>myproject.parent</toplevelArtifactId>
<failOnSCAError>true</failOnSCAError>
<upload>false</upload>
<projectName>My Project Main Development</projectName>
<projectVersion>$project.version</projectVersion>
</configuration>
</plugin>
</plugins>
</build>
</profile>
从命令行运行扫描:
mvn -Dmaven.test.skip=true -Dfortify.sca.buildId=myproject -Dfortify.sca.toplevel.artifactId=myproject.parent com.fortify.ps.maven.plugin:sca-maven-plugin:clean
显然,您必须弄清楚 buildId 和 artifactId 的命名方式,这取决于您使用的是 parent、aggregator 还是什么都没有。
【讨论】:
没有 fpr 在我的情况下生成。我必须将clean
、translate
和 scan
作为单独的 maven 命令运行。
我发现不需要将这 3 个配置文件添加到 pom.xml 中。安装 Fortify maven 插件后,我只需要运行here 中提到的 3 个命令。以上是关于加强与 Maven 的集成 - 安装的主要内容,如果未能解决你的问题,请参考以下文章
持续集成篇-Maven私有库和本地库的安装与配置Sonatype Nexus + Maven
Dubbo分布式系统架构,持续集成篇 Maven私有库和本地库的安装与配置 Sonatype Nexus + Maven