Search the FirstSpirit Knowledge Base
Hallo,
ich verwende das von Gradle-Plugin von e-spirit, um ein FSM-Modul zu bauen.
Das Modul soll ein Exectable (Public Component) und eine WebApp enthalten.
Ich benutze noch nicht die neueste Version des Plugins (2.1.2), weil ich noch den Legacy Mode brauche, aber ich hoffe, das tut nichts zur Sache.
Hier meine (vereinfachte) Projektstruktur:
+-- build.gradle.kts
+-- gradle.properties
+-- settings.gradle.kts
+-+ src
| +-+ main
| +-+ fsm-resources
| +-+ java
| +-+ com.relounge
| +-- MyExecutable.java (annotiert mit "@PublicComponent")
+-+ web
| +-- build.gradle.kts
| +-+ src
| +-+ main
| +-+ fsm-resources
| +-+ web
| +-- web.xml
| +-+ java
| +-+ com.relounge.web
| +-- MyPreviewApp.java (annotiert mit "@WebAppComponent")
Im Top Level "build.gradle.kts" habe ich
firstSpiritModule {
...
resourceMode = de.espirit.firstspirit.server.module.ModuleInfo.Mode.LEGACY
webAppComponent("My-Preview-Webapp", project(":web"))
}
Im "settings.gradle.kts" habe ich
include("web")
Im "build.gradle.kts" des Unterordners "web" habe ich
dependencies {
compileOnly(group = "de.espirit.firstspirit", name = "fs-isolated-runtime", version = fsRuntimeVersion)
fsWebCompile(group = "javax.servlet.jsp.jstl", name = "jstl", version = "1.2")
fsWebCompile(group = "org.apache.taglibs", name = "taglibs-standard-impl", version = "1.2.5")
}
Das erzeugte module.xml:
<?xml version="1.0" encoding="UTF-8"?>
<module>
<name>rl_fs-module</name>
<components>
<public>
<name>MyExecutable</name>
<displayname/>
<description/>
<class>com.relounge.MyExecutable</class>
</public>
<web-app scopes="project,global">
<name>My-Preview-Webapp</name>
<displayname>My-Preview-Webapp</displayname>
<description/>
<class>com.relounge.web.MyPreviewApp</class>
<web-xml>web/web.xml</web-xml>
<web-resources>
<resource name="com.relounge:fs-modules" version="0.0.1-SNAPSHOT">lib/fs-modules-0.0.1-SNAPSHOT.jar</resource>
<resource name="web" version="0.0.1-SNAPSHOT">web</resource>
<resource name="fs-modules:web" version="0.0.1-SNAPSHOT">lib/web-0.0.1-SNAPSHOT.jar</resource>
<resource name="javax.servlet.jsp.jstl:jstl" version="1.2" minVersion="1.2">lib/jstl-1.2.jar</resource>
<resource name="org.apache.taglibs:taglibs-standard-impl" version="1.2.5" minVersion="1.2.5">lib/taglibs-standard-impl-1.2.5.jar</resource>
</web-resources>
</web-app>
</components>
<resources>
<resource name="com.relounge:fs-modules" version="0.0.1-SNAPSHOT" scope="module" mode="legacy">lib/fs-modules-0.0.1-SNAPSHOT.jar</resource>
<resource name="commons-lang:commons-lang" scope="module" mode="legacy" version="2.6" minVersion="2.6">lib/commons-lang-2.6.jar</resource>
....
</resources>
</module>
Meine Frage wäre, wie ich es hinkriege, dass in den web-resources der Webapp nicht mehr das "lib/fs-modules-0.0.1-SNAPSHOT.jar" auftaucht -
denn in diesem jar sind ja nur die Java Klassen für das Executable, das ich aber in der Webapp gar nicht brauche.
Die in der Webapp benötigten Klassen sind ja in lib/web-0.0.1-SNAPSHOT.jar.
Irgendwelche Ideen?
Vielen Dank!!
Gruß,
Benny
Hallo,
ich habe es gerade mit der neuesten Version ausprobiert, da ist es genauso. Zugegeben, das Verhalten ist hier nicht intuitiv. Allerdings werden wir es vermutlich nicht einfach umbauen können, da sich existierende Projekte eventuell darauf verlassen.
Mein Vorschlag wäre, das Executable in ein separates Submodul zu verschieben und mit
dependencies {
fsModuleCompile(project(":executable"))
}
einzubinden. Es gibt dazu auch ein Beispiel im Repository.
Hallo,
ich habe es gerade mit der neuesten Version ausprobiert, da ist es genauso. Zugegeben, das Verhalten ist hier nicht intuitiv. Allerdings werden wir es vermutlich nicht einfach umbauen können, da sich existierende Projekte eventuell darauf verlassen.
Mein Vorschlag wäre, das Executable in ein separates Submodul zu verschieben und mit
dependencies {
fsModuleCompile(project(":executable"))
}
einzubinden. Es gibt dazu auch ein Beispiel im Repository.