Skip to content

Instantly share code, notes, and snippets.

@Marks13
Created April 18, 2024 09:54
Show Gist options
  • Save Marks13/94fd7de500297e9c6b9830a5f167e5c1 to your computer and use it in GitHub Desktop.
Save Marks13/94fd7de500297e9c6b9830a5f167e5c1 to your computer and use it in GitHub Desktop.
BiRT 4.15 wrapping for maven

Fill in the values at the beginning of the script. In my case, I'm using an enterprise artifactory so I'm pointing out on remote repository and use a mirror for central dependencies. I also have added a small behavior in the script, it checks for the availability of the dependency before pushing it to the remote repository. For my usecase (generate report that do aggregations and pure printing) it's working, adapt if you need specific functions.

Issues

I had issues with the first gist linked, as it was importing too much transitive dependencies. It has broken my slf4j configuration. For the second one some dependencies seemed irrelevant (the birt.runtime specifically).

Feel free to fork or to suggest fixs if you spot anything wrong.

#!/bin/bash
RUNTIME_PATH=
GROUP_ID_BASE=<your_birt_wrapping_group_id>
ARTIFACT_ID_BASE=<your_birt_wrapping_artifact_id>
REPOSITORY=<your_remote_repository>
REPOSITORY_ID=<remote_repository_id_in_settings.xml
LIB_PATH="${RUNTIME_PATH}/ReportEngine/lib"
ADDONS_PATH="${RUNTIME_PATH}/ReportEngine/addons"
function addToPom {
GROUP_ID="${1}"
ARTIFACT_ID="${2}"
ARTIFACT_VERSION="${3}"
cat <<EOT >> /tmp/pom.xml
<dependency>
<groupId>${GROUP_ID}</groupId>
<artifactId>${ARTIFACT_ID}</artifactId>
<version>${ARTIFACT_VERSION}</version>
</dependency>
EOT
}
function deploy {
FILE="${LIB_PATH}/${1}"
GROUP_ID="${2}"
ARTIFACT_ID="${3}"
ARTIFACT_VERSION="${4}"
mvn -q dependency:get -DgroupId=${GROUP_ID} -DartifactId=${ARTIFACT_ID} -Dversion=${ARTIFACT_VERSION} > /dev/null
if [[ "$?" -ne 0 ]] ; then
echo "${GROUP_ID}:${ARTIFACT_ID}:${ARTIFACT_VERSION} not available, deploying."
zip --delete ${FILE} "META-INF/maven/*"
mvn deploy:deploy-file -Durl=${REPOSITORY} \
-DgeneratePom=true \
-DrepositoryId=${REPOSITORY_ID} \
-Dfile=${FILE} \
-DgroupId=${GROUP_ID} \
-DartifactId=${ARTIFACT_ID} \
-Dversion=${ARTIFACT_VERSION} \
-Dpackaging=jar \
-Ddescription="Packaged dependency for BIRT 4.15."
else
echo "${GROUP_ID}:${ARTIFACT_ID}:${ARTIFACT_VERSION}' available nothing to do."
fi
addToPom "${GROUP_ID}" "${ARTIFACT_ID}" "${ARTIFACT_VERSION}"
}
rm -rf /tmp/pom.xml
cat <<EOT >>/tmp/pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>${GROUP_ID_BASE}</groupId>
<artifactId>${ARTIFACT_ID_BASE}</artifactId>
<version>4.15.0</version>
<packaging>jar</packaging>
<name>BiRT Module</name>
<description>the BiRT runtime artifact</description>
<properties>
<maven.compiler.target>21</maven.compiler.target>
<maven.compiler.source>21</maven.compiler.source>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<dependencies>
EOT
# Core
deploy "org.eclipse.core.runtime_3.31.0.v20240215-1631.jar" "${GROUP_ID_BASE}" "org.eclipse.core.runtime" "3.31.0"
deploy "org.eclipse.birt.runtime_4.15.0-202403270652.jar" "${GROUP_ID_BASE}" "org.eclipse.birt.runtime" "4.15.0"
deploy "org.eclipse.datatools.connectivity.oda.consumer_3.5.0.202311071249.jar" "${GROUP_ID_BASE}" "org.eclipse.datatools.connectivity.oda.consumer" "3.5.0"
deploy "org.eclipse.datatools.connectivity.oda_3.7.0.202311071249.jar" "${GROUP_ID_BASE}" "org.eclipse.datatools.connectivity.oda" "3.7.0"
deploy "org.eclipse.datatools.connectivity_1.15.0.202311071249.jar" "${GROUP_ID_BASE}" "org.eclipse.datatools.connectivity" "1.15.0"
deploy "org.eclipse.emf.common_2.30.0.v20231210-0956.jar" "${GROUP_ID_BASE}" "org.eclipse.emf.common" "2.30.0"
deploy "org.eclipse.emf.ecore.xmi_2.37.0.v20231208-1346.jar" "${GROUP_ID_BASE}" "org.eclipse.emf.ecore.xmi" "2.37.0"
deploy "org.eclipse.emf.ecore_2.36.0.v20240203-0859.jar" "${GROUP_ID_BASE}" "org.eclipse.emf.ecore" "2.36.0"
deploy "org.eclipse.equinox.common_3.19.0.v20240214-0846.jar" "${GROUP_ID_BASE}" "org.eclipse.equinox.common" "3.19.0"
deploy "org.eclipse.equinox.registry_3.12.0.v20240213-1057.jar" "${GROUP_ID_BASE}" "org.eclipse.equinox.registry" "3.12.0"
deploy "org.eclipse.osgi_3.19.0.v20240213-1246.jar" "${GROUP_ID_BASE}" "org.eclipse.osgi" "3.19.0"
deploy "" "com.github.librepdf" "openpdf" "1.4.1"
deploy "" "org.apache.xmlgraphics" "batik-anim" "1.17"
deploy "" "org.apache.xmlgraphics" "batik-awt-util" "1.17"
deploy "" "org.apache.xmlgraphics" "batik-bridge" "1.17"
deploy "" "org.apache.xmlgraphics" "batik-css" "1.17"
deploy "" "org.apache.xmlgraphics" "batik-constants" "1.17"
deploy "" "org.apache.xmlgraphics" "batik-dom" "1.17"
deploy "" "org.apache.xmlgraphics" "batik-ext" "1.17"
deploy "" "org.apache.xmlgraphics" "batik-gvt" "1.17"
deploy "" "org.apache.xmlgraphics" "batik-i18n" "1.17"
deploy "" "org.apache.xmlgraphics" "batik-parser" "1.17"
deploy "" "org.apache.xmlgraphics" "batik-script" "1.17"
deploy "" "org.apache.xmlgraphics" "batik-svg-dom" "1.17"
deploy "" "org.apache.xmlgraphics" "batik-transcoder" "1.17"
deploy "" "org.apache.xmlgraphics" "batik-util" "1.17"
deploy "" "org.apache.xmlgraphics" "batik-xml" "1.17"
deploy "" "xerces" "xercesImpl" "2.12.2"
deploy "" "org.apache.xmlgraphics" "xmlgraphics-commons" "2.9"
deploy "" "com.ibm.icu" "icu4j" "74.2"
deploy "" "org.mozilla" "rhino" "1.7.14"
deploy "" "org.apache.commons" "commons-collections4" "4.4"
deploy "" "org.apache.commons" "commons-compress" "1.26.0"
deploy "" "commons-io" "commons-io" "2.15.1"
deploy "" "org.apache.logging.log4j" "log4j-api" "2.23.0"
deploy "" "org.apache.poi" "poi" "5.2.5"
deploy "" "org.apache.poi" "poi-ooxml" "5.2.5"
deploy "" "org.osgi" "org.osgi.service.prefs" "1.1.2"
deploy "" "com.zaxxer" "SparseBitSet" "1.3"
cat <<EOT >>/tmp/pom.xml
</dependencies>
</project>
EOT
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment