diff --git a/apache-commons-jci-1.1-janino27.patch b/apache-commons-jci-1.1-janino27.patch
new file mode 100644
index 0000000..7a151e9
--- /dev/null
+++ b/apache-commons-jci-1.1-janino27.patch
@@ -0,0 +1,19 @@
+diff -Nru commons-jci-1.1-src/compilers/janino/src/main/java/org/apache/commons/jci/compilers/JaninoJavaCompiler.java commons-jci-1.1-src.janino/compilers/janino/src/main/java/org/apache/commons/jci/compilers/JaninoJavaCompiler.java
+--- commons-jci-1.1-src/compilers/janino/src/main/java/org/apache/commons/jci/compilers/JaninoJavaCompiler.java 2013-08-18 23:14:52.000000000 +0200
++++ commons-jci-1.1-src.janino/compilers/janino/src/main/java/org/apache/commons/jci/compilers/JaninoJavaCompiler.java 2015-02-09 20:21:47.934668187 +0100
+@@ -31,13 +31,13 @@
+ import org.apache.commons.logging.Log;
+ import org.apache.commons.logging.LogFactory;
+ import org.codehaus.commons.compiler.CompileException;
++import org.codehaus.commons.compiler.ErrorHandler;
+ import org.codehaus.commons.compiler.LocatedException;
+ import org.codehaus.commons.compiler.Location;
++import org.codehaus.commons.compiler.WarningHandler;
+ import org.codehaus.janino.ClassLoaderIClassLoader;
+ import org.codehaus.janino.Compiler;
+ import org.codehaus.janino.FilterWarningHandler;
+-import org.codehaus.janino.UnitCompiler.ErrorHandler;
+-import org.codehaus.janino.WarningHandler;
+ import org.codehaus.janino.util.StringPattern;
+ import org.codehaus.janino.util.resource.Resource;
+ import org.codehaus.janino.util.resource.ResourceCreator;
diff --git a/apache-commons-jci.spec b/apache-commons-jci.spec
new file mode 100644
index 0000000..fb59d42
--- /dev/null
+++ b/apache-commons-jci.spec
@@ -0,0 +1,118 @@
+%global base_name jci
+%global short_name commons-%{base_name}
+%global namedreltag %{nil}
+%global namedversion %{version}%{?namedreltag}
+Name: apache-commons-jci
+Version: 1.1
+Release: 1
+Summary: Commons Java Compiler Interface
+License: ASL 2.0
+URL: http://commons.apache.org/jci/
+Source0: http://www.apache.org/dist/commons/%{base_name}/source/%{short_name}-%{namedversion}-src.tar.gz
+Patch0: %{name}-1.1-janino27.patch
+BuildRequires: maven-local maven-antrun-plugin maven-plugin-bundle ecj >= 3.4.2-13
+BuildRequires: mvn(commons-logging:commons-logging) mvn(commons-io:commons-io)
+BuildRequires: mvn(org.apache.commons:commons-parent:pom:) mvn(org.codehaus.groovy:groovy)
+BuildRequires: mvn(org.codehaus.janino:janino) mvn(rhino:js)
+BuildRequires: mvn(junit:junit) objectweb-asm3 mvn(org.apache.commons:commons-lang3)
+Requires: %{name}-core = %{version}-%{release}
+BuildArch: noarch
+
+%description
+JCI is a java compiler interface featuring a compiling class loader.
+The current implementation supports compilation via the following
+compilers:
+* eclipse
+* groovy
+* janino
+* rhino
+
+%package core
+Summary: Commons Java Compiler Interface - core
+%description core
+Commons JCI core interfaces and implementations.
+
+%package fam
+Summary: Commons Java Compiler Interface - FAM
+%description fam
+Commons JCI FileAlterationMonitor (FAM) to
+monitor local file systems and get notified
+about changes.
+
+%package javadoc
+Summary: Javadoc for %{name}
+%description javadoc
+This package contains javadoc for %{name}.
+
+%package eclipse
+Summary: Commons Java Compiler Interface - eclipse
+%description eclipse
+Commons JCI compiler implementation for the eclipse compiler.
+
+%package groovy
+Summary: Commons Java Compiler Interface - groovy
+%description groovy
+Commons JCI compiler implementation for the groovy compiler.
+
+%package janino
+Summary: Commons Java Compiler Interface - janino
+%description janino
+Commons JCI compiler implementation for the janino compiler.
+
+%package rhino
+Summary: Commons Java Compiler Interface - rhino
+%description rhino
+Commons JCI compiler implementation for rhino JavaScript.
+
+%prep
+%setup -q -n %{short_name}-%{namedversion}-src
+find . -name "*.class" -delete
+find . -name "*.jar" -delete
+%patch0 -p1
+%pom_disable_module examples
+%pom_xpath_remove "pom:build/pom:extensions"
+%pom_xpath_set "pom:properties/pom:maven.compiler.source" 1.6
+%pom_xpath_set "pom:properties/pom:maven.compiler.target" 1.6
+%pom_remove_plugin :cobertura-maven-plugin
+%pom_remove_plugin :maven-assembly-plugin
+%pom_remove_plugin :maven-site-plugin
+%pom_xpath_set "pom:dependencyManagement/pom:dependencies/pom:dependency[pom:groupId = 'org.codehaus.groovy']/pom:artifactId" groovy
+%pom_xpath_set "pom:dependencyManagement/pom:dependencies/pom:dependency[pom:groupId = 'org.codehaus.groovy']/pom:version" 1.8.9
+%pom_xpath_set "pom:dependencies/pom:dependency[pom:groupId = 'org.codehaus.groovy']/pom:artifactId" groovy compilers/groovy
+%pom_xpath_inject "pom:dependencies/pom:dependency[pom:groupId = 'org.codehaus.groovy']" "1.8.9" compilers/groovy
+%mvn_file :%{short_name}-core %{short_name}/%{short_name}-core
+%mvn_file :%{short_name}-fam %{short_name}/%{short_name}-fam
+%mvn_file :%{short_name}-eclipse %{short_name}/%{short_name}-eclipse
+%mvn_file :%{short_name}-groovy %{short_name}/%{short_name}-groovy
+%mvn_file :%{short_name}-janino %{short_name}/%{short_name}-janino
+%mvn_file :%{short_name}-rhino %{short_name}/%{short_name}-rhino
+
+%build
+%mvn_build -s -- -Dmaven.test.failure.ignore=true
+
+%install
+%mvn_install
+
+%files -f .mfiles-%{short_name}
+%dir %{_javadir}/%{short_name}
+%doc README.txt TODO.txt
+%license LICENSE.txt NOTICE.txt
+
+%files core -f .mfiles-%{short_name}-core
+
+%files fam -f .mfiles-%{short_name}-fam
+
+%files javadoc -f .mfiles-javadoc
+%license LICENSE.txt NOTICE.txt
+
+%files eclipse -f .mfiles-%{short_name}-eclipse
+
+%files groovy -f .mfiles-%{short_name}-groovy
+
+%files janino -f .mfiles-%{short_name}-janino
+
+%files rhino -f .mfiles-%{short_name}-rhino
+
+%changelog
+* Fri Jul 24 2020 chengzihan - 1.1-1
+- Package init
diff --git a/apache-commons-jci.yaml b/apache-commons-jci.yaml
new file mode 100644
index 0000000..8613079
--- /dev/null
+++ b/apache-commons-jci.yaml
@@ -0,0 +1,5 @@
+git_url: https://github.com/apache/commons-jci.git
+version_control: github
+src_repo: apache/commons-jci
+tag_prefix: "^"
+seperator: "."
diff --git a/commons-jci-1.1-src.tar.gz b/commons-jci-1.1-src.tar.gz
new file mode 100644
index 0000000..3beb1c1
Binary files /dev/null and b/commons-jci-1.1-src.tar.gz differ