Я создал рабочую область liferay в формате gradle, и она в основном содержит только тему и модуль TemplateContextContributor.
Теперь я хочу создать оболочку maven вокруг обоих артефактов, чтобы сделать их совместимыми с некоторыми другимиmaven-process / -plugins при сохранении оригинальной структуры gradle.Я не хочу использовать liferay-maven-plugin или maven-tools для создания этих артефактов, потому что кажется, что они ведут себя иначе, чем набор инструментов gradle / gulp, когда речь идет, например, о компиляции scss.
Итак, я создалнекоторые POM с нуля для
- Theme
- TemplateContextContributor-Module
Прежде всего я расскажу о механизме для темы, которыйуже работает:
Эта оболочка использует плагин maven-war для объединения содержимого папки build /, в которой находится ранее созданный артефакт gradle, в WAR-файл, который может быть развернут с помощьюLiferay без проблем.
theme pom.xml:
<properties>
<src.dir>src</src.dir>
<com.liferay.portal.tools.theme.builder.outputDir>build</com.liferay.portal.tools.theme.builder.outputDir>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
[...]
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<webResources>
<resource>
<directory>${com.liferay.portal.tools.theme.builder.outputDir}</directory>
<excludes>
<exclude>**/*.sass-cache/</exclude>
</excludes>
</resource>
</webResources>
</configuration>
</plugin>
Однако у меня возникают трудности при создании JAR-файла, совместимого с OSGI, для содержимого модуля.Кажется, что только META-INF / MANIFEST.MF не содержит нужной информации, и я, по-видимому, не могу сгенерировать ее так, как Liferay (или OSGI) понимает.
это модуль pom.xml-зависимости и плагины, которые я пробовал:
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.scr.ds-annotations</artifactId>
<version>1.2.10</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.liferay</groupId>
<artifactId>com.liferay.gradle.plugins</artifactId>
<version>3.9.9</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.liferay.portal</groupId>
<artifactId>com.liferay.portal.kernel</artifactId>
<version>2.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.service.component.annotations</artifactId>
<version>1.3.0</version>
<scope>provided</scope>
</dependency>
[...]
<plugin>
<groupId>biz.aQute.bnd</groupId>
<artifactId>bnd-maven-plugin</artifactId>
<version>3.3.0</version>
<executions>
<execution>
<goals>
<goal>bnd-process</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>biz.aQute.bnd</groupId>
<artifactId>biz.aQute.bndlib</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>com.liferay</groupId>
<artifactId>com.liferay.ant.bnd</artifactId>
<version>2.0.48</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-scr-plugin</artifactId>
<version>1.25.0</version>
<executions>
<execution>
<id>generate-scr-scrdescriptor</id>
<goals>
<goal>scr</goal>
</goals>
</execution>
</executions>
</plugin>
Я смог создать JAR-файл, используя описанное выше, но его файл META-INF / MANIFEST.MF не идентичен тому, который был создан gradlebuild:
Я думаю, именно поэтому Liferay не развертывает его.В журнале написано «модуль обработки xxx ....», но это никогда не заканчивается, и модуль не работает в Liferay.
Это плагины, которые я пробовал в различных комбинациях:
- maven-build-plugin
- maven-scr-plugin
- maven-jar-plugin
- maven-war-plugin
- maven-compiler-plugin
Любая помощь в создании JAR-модуля, развертываемого на уровне жизни, была бы полезна.