Skip to content
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
10 changes: 10 additions & 0 deletions custom-extensions/build.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<project name="custom-extensions" default="build">

<target name="build">
<subant target="build" inheritall="true">
<fileset dir="." includes="*/build.xml"/>
</subant>
</target>

</project>

17 changes: 17 additions & 0 deletions custom-extensions/dynamic-lookup-gateway/.classpath
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<!-- Source folders -->
<classpathentry kind="src" path="shared/src/main/java"/>
<classpathentry kind="src" path="server/src/main/java"/>
<classpathentry kind="src" path="client/src/main/java"/>

<!-- Output folder -->
<classpathentry kind="output" path="build/classes"/>

<!-- JRE -->
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>

<!-- Optional: Add plugin/lib dependencies here -->
<!-- Example: -->
<!-- <classpathentry kind="lib" path="../../server/lib/some-library.jar"/> -->
</classpath>
2 changes: 2 additions & 0 deletions custom-extensions/dynamic-lookup-gateway/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Build output
/build/
15 changes: 15 additions & 0 deletions custom-extensions/dynamic-lookup-gateway/.project
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>dynamic-lookup-gateway</name>
<comment></comment>
<projects></projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments></arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
26 changes: 26 additions & 0 deletions custom-extensions/dynamic-lookup-gateway/build.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Plugin name
plugin.name=dynamic-lookup-gateway

# Build output
build.dir=build
classes.dir=${build.dir}/classes
dist.dir=${build.dir}/dist
plugin.lib=libs

# Mirth dependency paths (relative to plugin location)
server.lib=../../server/lib
client.lib=../../client/lib

# Paths to compiled class files of Mirth modules (used for referencing in classpath)
server.classes.dir=../../server/classes
client.classes.dir=../../client/classes

# Resource directories (Maven-style)
server.resources.dir=server/src/main/resources

# Path to MC setup directory where final packaged extensions go
server.setup.extensions=../../server/setup/extensions
server.setup.conf=../../server/setup/conf
# Signing properties
keystore_property_file=keystore.properties
signjar_thread_count=4
170 changes: 170 additions & 0 deletions custom-extensions/dynamic-lookup-gateway/build.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,170 @@
<project name="dynamic-lookup-gateway" default="build">

<!-- Configuration -->
<property name="manifest_thread_count" value="4" />
<property name="signjar_thread_count" value="4" />

<property file="build.properties" />
<property file="../../server/keystore.properties" />

<!-- Clean build output -->
<target name="clean">
<delete dir="${build.dir}"/>
<delete dir="${server.setup.extensions}/${plugin.name}"/>
</target>

<!-- Compile all sources -->
<target name="compile">
<mkdir dir="${classes.dir}/shared"/>
<mkdir dir="${classes.dir}/server"/>
<mkdir dir="${classes.dir}/client"/>

<!-- Compile shared -->
<javac srcdir="shared" destdir="${classes.dir}/shared" includeantruntime="false">
<classpath>
<fileset dir="${server.lib}" includes="**/*.jar"/>
<fileset dir="${client.lib}" includes="**/*.jar"/>
</classpath>
</javac>

<!-- Compile server -->
<javac srcdir="server" destdir="${classes.dir}/server" includeantruntime="false">
<classpath>
<pathelement path="${classes.dir}/shared"/>
<pathelement path="${server.classes.dir}"/>

<fileset dir="${server.lib}" includes="**/*.jar"/>
<fileset dir="${plugin.lib}" includes="**/*.jar"/>
</classpath>
</javac>

<!-- Compile client -->
<javac srcdir="client" destdir="${classes.dir}/client" includeantruntime="false">
<classpath>
<pathelement path="${classes.dir}/shared"/>
<pathelement path="${client.classes.dir}"/>

<fileset dir="${client.lib}" includes="**/*.jar"/>
<fileset dir="${plugin.lib}" includes="**/*.jar"/>
</classpath>
</javac>
</target>

<!-- Conditionally copy server resources -->
<available file="${server.resources.dir}" type="dir" property="server.resources.present"/>

<target name="copy-resources" if="server.resources.present">
<copy todir="${classes.dir}/server">
<fileset dir="${server.resources.dir}" includes="**/*"/>
</copy>
</target>

<!-- Package JARs -->
<target name="jar" depends="compile, copy-resources">
<mkdir dir="${dist.dir}"/>

<jar destfile="${dist.dir}/${plugin.name}-shared.jar">
<fileset dir="${classes.dir}/shared" includes="**/*"/>
</jar>

<jar destfile="${dist.dir}/${plugin.name}-server.jar">
<fileset dir="${classes.dir}/server" includes="**/*"/>
</jar>

<jar destfile="${dist.dir}/${plugin.name}-client.jar">
<fileset dir="${classes.dir}/client" includes="**/*"/>
</jar>
</target>

<!-- Sign all JAR files in dist -->
<target name="patch-and-sign-jars">
<!-- Load Ant-Contrib for <for> and <retry> -->
<taskdef resource="net/sf/antcontrib/antlib.xml">
<classpath>
<fileset dir="${server.lib}/ant" includes="ant-contrib*.jar"/>
</classpath>
</taskdef>

<echo message="Patching JAR manifests before signing..." />

<for param="jarFile" parallel="true" threadCount="${manifest_thread_count}">
<fileset dir="${dist.dir}" includes="**/*.jar"/>
<sequential>
<!-- Inject Permissions/Codebase/Application-Name -->
<apply executable="jar">
<arg value="umf" />
<arg value="../../server/custom_manifest.mf" />
<srcfile />
<fileset file="@{jarFile}"/>
</apply>
</sequential>
</for>

<echo message="Signing plugin JARs..."/>

<for param="jarFile" parallel="true" threadCount="${signjar_thread_count}">
<fileset dir="${dist.dir}" includes="**/*.jar"/>
<sequential>
<retry retrycount="5" retrydelay="1000">
<signjar jar="@{jarFile}"
alias="${key.alias}"
keystore="../../server/keystore.jks"
storepass="${key.storepass}"
keypass="${key.keypass}"
storetype="${key.storetype}"
tsaurl="http://timestamp.digicert.com"
digestalg="SHA-256">
<sysproperty key="jsse.enableSNIExtension" value="false"/>
<sysproperty key="https.protocols" value="TLSv1.2,TLSv1.1"/>
</signjar>
</retry>
</sequential>
</for>
</target>

<!-- Copy built plugin to Mirth's setup/extensions directory -->
<target name="install-to-server-setup">
<!-- Copy plugin JARs and libs -->
<mkdir dir="${server.setup.extensions}/${plugin.name}"/>
<copy todir="${server.setup.extensions}/${plugin.name}">
<fileset dir="${dist.dir}" includes="**/*"/>
</copy>

<!-- Copy plugin configuration to server/conf -->
<copy file="dynamic-lookup.properties"
tofile="${server.setup.conf}/dynamic-lookup.properties"
overwrite="true"/>

<echo message="Installed plugin to ${server.setup.extensions}/${plugin.name}" />
<echo message="Installed dynamic-lookup.properties to ${server.setup.conf}" />
</target>

<target name="build" depends="clean, jar">
<!-- Copy plugin.xml -->
<copy file="plugin.xml" todir="${dist.dir}"/>

<!-- Copy plugin-specific JARs -->
<copy todir="${dist.dir}/libs">
<fileset dir="${plugin.lib}" includes="**/*.jar"/>
</copy>

<!-- Copy mapper folder from server resources to dist -->
<copy todir="${dist.dir}/mapper">
<fileset dir="${server.resources.dir}/mapper" includes="**/*"/>
</copy>

<!-- Path and Sign all JARs in dist -->
<antcall target="patch-and-sign-jars"/>

<!-- Now install the full plugin to the server setup extensions folder -->
<antcall target="install-to-server-setup"/>

<!-- Package everything in dist/ into a zip file -->
<zip destfile="${dist.dir}/${plugin.name}.zip" basedir="${dist.dir}">
<exclude name="${plugin.name}.zip"/> <!-- Avoid zipping the zip itself -->
</zip>

<echo message="Built, signed, installed, and zipped ${plugin.name}"/>
</target>

</project>
Loading
Loading