# Export property in module.xml file

**URL:** <https://forum.inductiveautomation.com/t/export-property-in-module-xml-file/106299>\
**Category:** Module Development\
**Created:** [May 15, 2025, 1:55pm UTC](https://forum.inductiveautomation.com/t/export-property-in-module-xml-file/106299 "2025-05-15T13:55:22Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![sebastian.fekete](https://avatars.discourse-cdn.com/v4/letter/s/977dab/32.png) [@sebastian.fekete](https://forum.inductiveautomation.com/u/sebastian.fekete)\
**Post date:** [May 15, 2025, 1:55pm UTC](https://forum.inductiveautomation.com/t/export-property-in-module-xml-file/106299/1 "2025-05-15T13:55:22Z")

</div>

Hi everyone,  
I'm currently developing a custom Ignition module using the scripting-function Maven project as a base. In my `module.xml` file, I'm including third-party libraries like so:

```python
<jar scope="DG">msal4j-1.20.1.jar</jar>

```

According to( [The module.xml File | Ignition SDK Programmer's Guide](https://www.sdk-docs.inductiveautomation.com/docs/getting-started/anatomy-of-a-module/the-modulexml-file/)) there's an `<export>` tag that can be used to make JARs available to a higher classloader

However, I'm not sure how to properly configure this in my maven-based build so that the required JARs are both:

- packaged in the `.modl` file, and
- included in the `<export>` section of the `module.xml`.

Are there any examples or best practices for automatically generating the `<export>` entries?

Thanks in advance!

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [May 15, 2025, 2:16pm UTC](https://forum.inductiveautomation.com/t/export-property-in-module-xml-file/106299/2 "2025-05-15T14:16:47Z")

</div>

I still use `ant` to build my modules, so I can't help you with maven or gradle. But I use this in my Integration Toolkit module if you'd like an example of how it is supposed to turn out.

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [May 15, 2025, 4:52pm UTC](https://forum.inductiveautomation.com/t/export-property-in-module-xml-file/106299/3 "2025-05-15T16:52:05Z")

</div>

The current Maven module plugin doesn't have any way to set a dependency as `export` that I can see:

> **[GitHub - inductiveautomation/ignition-maven-plugin: A Maven plugin for building...](https://github.com/inductiveautomation/ignition-maven-plugin/tree/master)**
>
> master

---

<div class="post-metadata">

**Author:** ![sebastian.fekete](https://avatars.discourse-cdn.com/v4/letter/s/977dab/32.png) [@sebastian.fekete](https://forum.inductiveautomation.com/u/sebastian.fekete)\
**Post date:** [May 21, 2025, 5:54am UTC](https://forum.inductiveautomation.com/t/export-property-in-module-xml-file/106299/4 "2025-05-21T05:54:59Z")

</div>

Sure, could you provide the module?

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [May 21, 2025, 12:34pm UTC](https://forum.inductiveautomation.com/t/export-property-in-module-xml-file/106299/5 "2025-05-21T12:34:05Z")

</div>

Over here:

> [@Automation Professionals' Integration Toolkit Module](https://forum.inductiveautomation.com/t/automation-professionals-integration-toolkit-module/74934):
>
> Automation Professionals is pleased to announce the immediately availability of a major upgrade to its free Simulation Aids Integration Toolkit module. The new feature justifying the "major upgrade" language is the implementation of eleven thirty-one new expression functions which use iteration to accomplish complex transforms of datasets and lists, to or from other datasets and lists, applying filtering, ordering, and computed new columns along the way. While there are certain operations that…

---

<div class="post-metadata">

**Author:** ![sebastian.fekete](https://avatars.discourse-cdn.com/v4/letter/s/977dab/32.png) [@sebastian.fekete](https://forum.inductiveautomation.com/u/sebastian.fekete)\
**Post date:** [May 22, 2025, 8:12am UTC](https://forum.inductiveautomation.com/t/export-property-in-module-xml-file/106299/6 "2025-05-22T08:12:24Z")

</div>

Thanks! may i ask a further question: it says that with the export tag the dependencies are available in a higher classloader, which classloader does this refer to and in which context are those dependencies accessible? My original goal was to make `msal4j.jar` available to the database classloaders, but I assume that’s not feasible using `export` or generally with a module, correct?

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [May 22, 2025, 1:16pm UTC](https://forum.inductiveautomation.com/t/export-property-in-module-xml-file/106299/7 "2025-05-22T13:16:21Z")

</div>

> [@sebastian.fekete](#):
>
> which classloader does this refer to

Not sure. I thought it was the root classloader.

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [May 22, 2025, 1:27pm UTC](https://forum.inductiveautomation.com/t/export-property-in-module-xml-file/106299/8 "2025-05-22T13:27:46Z")

</div>

> [@pturmel](#):
>
> I thought it was the root classloader.

It's a separate ClassLoader that sits between modules and the root/context ClassLoader.

> [@sebastian.fekete](#):
>
> My original goal was to make `msal4j.jar` available to the database classloaders, but I assume that’s not feasible using `export` or generally with a module, correct?

I don't think so; JDBC drivers are in their own isolated ClassLoader.

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [May 22, 2025, 1:31pm UTC](https://forum.inductiveautomation.com/t/export-property-in-module-xml-file/106299/9 "2025-05-22T13:31:54Z")

</div>

Something like this I think:

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/6/0/60082511f23c92e528d733383466a5d71c7e19ac.png)

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [May 22, 2025, 2:02pm UTC](https://forum.inductiveautomation.com/t/export-property-in-module-xml-file/106299/10 "2025-05-22T14:02:03Z")

</div>

Then scripting must run from that modules classloader, as exported classes are directly accessible in gateway scripts.

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [May 22, 2025, 3:34pm UTC](https://forum.inductiveautomation.com/t/export-property-in-module-xml-file/106299/11 "2025-05-22T15:34:10Z")

</div>

> [@sebastian.fekete](#):
>
> My original goal was to make `msal4j.jar` available to the database classloaders, but I assume that’s not feasible using `export` or generally with a module, correct?

I mean, modules can run arbitrary code. The JDBC classloader just picks up whatever jars are in the `jdbc/` folder. Nothing's stopping you from just dropping your own JAR there other than the prospect of having to clean it up eventually.

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [May 22, 2025, 3:58pm UTC](https://forum.inductiveautomation.com/t/export-property-in-module-xml-file/106299/12 "2025-05-22T15:58:31Z")

</div>

Another trick you can do is just add an additional classpath entry to `ignition.conf`, e.g.

```python
wrapper.java.classpath.3=lib/core/custom

```

and drop any extra JAR files you want in there.

edit: though I'm not sure that's the right place for JDBC hackage...

---

<div class="post-metadata">

**Author:** ![sebastian.fekete](https://avatars.discourse-cdn.com/v4/letter/s/977dab/32.png) [@sebastian.fekete](https://forum.inductiveautomation.com/u/sebastian.fekete)\
**Post date:** [May 26, 2025, 1:36pm UTC](https://forum.inductiveautomation.com/t/export-property-in-module-xml-file/106299/13 "2025-05-26T13:36:58Z")

</div>

That’s true, and it's actually what we're currently doing — copying the necessary JARs into `user-lib/jdbc` manually. However, I’d like to replace this approach with a module-based solution, so that installing the module would automatically make the JARs available to the JDBC ClassLoader, and ideally persist across Ignition version upgrades. But haven't found a way yet.

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [May 26, 2025, 2:16pm UTC](https://forum.inductiveautomation.com/t/export-property-in-module-xml-file/106299/14 "2025-05-26T14:16:12Z")

</div>

I think he’s suggesting your module can be the one that includes and copies the JARs into the JDBC folder.
