Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add dependencies check script #3941

Merged
merged 6 commits into from
May 22, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,7 @@ Thumbs.db
*.orig

# flatten ignore
.flattened-pom.xml
.flattened-pom.xml

# license check result
license-list.txt
96 changes: 96 additions & 0 deletions licenseCheck.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
#!/bin/bash

APPEND_ARG=""
FOLDER="./"
LINE_FLAG="=============================================="
TARGET_FILE="./license-list.txt"

red=`tput setaf 1`
green=`tput setaf 2`
reset=`tput sgr0`


if [ -n "$1" ]; then
echo "checking module $1"
APPEND_ARG="-f $1"
FOLDER="$1"
else
echo "checking whole project"
fi

echo "Running command: ./mvnw clean package -DskipTests=true -PlicenseCheck $APPEND_ARG"

./mvnw clean package -DskipTests=true -PlicenseCheck $APPEND_ARG

status=$?
if [ $status -eq 0 ]; then
echo "mvn command exec success"
else
echo "${red}mvn command exec fail${reset}"
exit 1
fi


#contact and generate license file
rm -rf $TARGET_FILE
LICENSE_FILES=`find $FOLDER -type f -name "THIRD-PARTY.txt"|grep generated-sources`

echo "Find license files:"
echo "$LICENSE_FILES"

for i in $LICENSE_FILES
do
echo "$LINE_FLAG" >> $TARGET_FILE
echo $i >> $TARGET_FILE
cat $i >> $TARGET_FILE
done

echo "license files generated at $TARGET_FILE"

#fix missing license dependencies
missingLicense=(
"(Unknown license) jsr173_api:(Apache License, Version 2.0) jsr173_api"
"(Unknown license) \"Java Concurrency in Practice\" book annotations:(BEA licensed) \"Java Concurrency in Practice\" book annotations"
"(Unknown license) Java Portlet Specification V2.0:(Apache License, Version 2.0) Java Portlet Specification V2.0"
)

for i in "${missingLicense[@]}"; do
search=`echo $i |awk -F: '{print $1}'`
replace=`echo $i |awk -F: '{print $2}'`
sed -i -e 's/'"$search"'/'"$replace"'/g' $TARGET_FILE
done

check_unknown_license=`cat $TARGET_FILE | grep "Unknown license"`

#checking unknown license
if grep -q "Unknown license" $TARGET_FILE
then
echo "${red}Find unknown license${reset}"
echo "$check_unknown_license"
exit 1
fi

allowLicense=(
"CDDL"
"Apache"
"Common Development and Distribution License"
"Eclipse Public License"
"MIT"
"The 3-Clause BSD License"
"Public domain"
)

#filter allow license
license_need_check=`cat $TARGET_FILE | grep -v "generated-sources/license/THIRD-PARTY.txt" | grep -v "third-party dependencies" | grep -v $LINE_FLAG`

for i in "${allowLicense[@]}"; do
license_need_check=`echo "$license_need_check"|grep -vi "$i"`
done

if test -z "$license_need_check"
then
echo "${green}All dependencies license looks good${reset}"
else
echo "${red}Please check below license${reset}"
echo "$license_need_check"
fi
35 changes: 35 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -302,6 +302,41 @@
</plugins>
</build>
</profile>
<profile>
<id>licenseCheck</id>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>license-maven-plugin</artifactId>
<version>1.20</version>
<executions>
<execution>
<id>license-check</id>
<phase>generate-sources</phase>
<goals>
<goal>add-third-party</goal>
</goals>
<configuration>
<includeOptional>false</includeOptional>
<useMissingFile>false</useMissingFile>
<failOnMissing>false</failOnMissing>
<licenseMerges>
<licenseMerge>Apache License, Version 2.0|The Apache Software License, Version
2.0|ASF 2.0|Apache 2|Apache-2.0|Apache 2.0 License|Apache 2.0|Apache License v2.0|Apache License 2.0|The Apache License, Version 2.0|The Apache Software License, Version 2.0
</licenseMerge>
<licenseMerge>The MIT License|MIT License</licenseMerge>
<licenseMerge>The 3-Clause BSD License|New BSD License|3-Clause BSD
License|BSD|3-Clause BSD License|The New BSD License
</licenseMerge>
</licenseMerges>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>

<build>
Expand Down