Недавно я разместил приложение mule в Maven Central Repo. Приложение содержит два файла java и файл dwl. Файл dwl использует эти java-файлы для выполнения некоторых операций. Это основное приложение (app1), на которое я хочу сослаться в другом приложении (app2) как на зависимость pom.
Имя основного - encryption-1.0.5-mule-application.jar
.
Имя содержащегося в нем сценария dwl - encryption.dwl
. Файлы Java доступны в пакете jar-файла /company
.
Случай 1: если я упакую это основное приложение mule (app1) как jar и установлю приложение в свое локальное репозиторий .m2, а затем добавлю его как зависимость pom и общую библиотеку для mule-maven- плагин другого вторичного приложения mule (app2). Приложение 2 может распознать сценарий dwl и работает после развертывания.
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>3.0.0</version>
</plugin>
<plugin>
<groupId>org.mule.tools.maven</groupId>
<artifactId>mule-maven-plugin</artifactId>
<version>${mule.maven.plugin.version}</version>
<extensions>true</extensions>
<configuration>
<sharedLibraries>
<sharedLibrary>
<groupId>com.github.xyz</groupId>
<artifactId>encryption</artifactId>
</sharedLibrary>
</sharedLibraries>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.github.xyz</groupId>
<artifactId>encryption</artifactId>
<version>1.0.5</version>
</dependency>
<dependencies>
Случай 2: если я включу зависимость app1 в файл app2 pom.xml с областью видимости как <system>
, включу в него ‹systemPath = jarfilelocation / app1.jar› и добавлю общую библиотеку, тогда jar добавляется в корневую папку app2, и при развертывании все работает.
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>3.0.0</version>
</plugin>
<plugin>
<groupId>org.mule.tools.maven</groupId>
<artifactId>mule-maven-plugin</artifactId>
<version>${mule.maven.plugin.version}</version>
<extensions>true</extensions>
<configuration>
<sharedLibraries>
<sharedLibrary>
<groupId>com.github.xyz</groupId>
<artifactId>encryption</artifactId>
</sharedLibrary>
</sharedLibraries>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.github.xyz</groupId>
<artifactId>encryption</artifactId>
<version>1.0.5</version>
<scope>system</scope>
<systemPath>${project.basedir}/encryption-1.0.5-mule-application.jar</systemPath>
</dependency>
<dependencies>
Случай 3: если я включу app1 в качестве зависимости в app2 pom.xml с областью действия <provided>
и добавлю общую библиотеку, jar-файлы будут загружены из восходящего потока и добавлены в библиотеки проекта app2. Но app2 не распознает сценарий dwl, доступный в библиотеках проекта. Без добавления области pom делает развертывание недействительным, что приводит к сбою.
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>3.0.0</version>
</plugin>
<plugin>
<groupId>org.mule.tools.maven</groupId>
<artifactId>mule-maven-plugin</artifactId>
<version>${mule.maven.plugin.version}</version>
<extensions>true</extensions>
<configuration>
<sharedLibraries>
<sharedLibrary>
<groupId>com.github.xyz</groupId>
<artifactId>encryption</artifactId>
</sharedLibrary>
</sharedLibraries>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.github.xyz</groupId>
<artifactId>encryption</artifactId>
<version>1.0.5</version>
<scope>provided</scope>
</dependency>
<dependencies>
Моя цель - заставить app2 распознавать файл dwl app1 и все другие файлы, которые автоматически добавляются Studio в библиотеки проектов (PL) проводника пакетов mule app2, один раз после успешной загрузки jar-файлов с использованием зависимости pom, которую мы добавлен.
Я уже вижу все файлы app1, доступные под encryption-1.0.5-mule-application.jar
в PL app2, которые были получены с использованием зависимости pom.
Тем не менее я не мог распознать эти файлы в XML-файле данных app2 mule. Мне нужна помощь в этом разобраться.
Примечание: я также включил всевозможные комбинации, используя файл mule-artifact.json.
{
"name": "MyApp",
"minMuleVersion": "4.3.0",
"classLoaderModelLoaderDescriptor": {
"id": "mule",
"attributes": {
"exportedPackages": [
"company"
],
"exportedResources": [
"encryption/encryption.dwl",
"encryption.dwl",
"*/encryption.dwl",
"company/encryption.dwl"
]
}
}
}