Ausbrechen Vaadin widgetset Zusammenstellung
Um Zeit zu sparen kompilieren, bin ich versucht zu brechen, aus der Zusammenstellung der widgetsets zu einem TeamCity build-Projekt von seiner eigenen, wir sind mit nexus als repo. Das Vaadin - "Basis-Projekt" ist dann enthalten in Abhängigkeit von der widgetset Artefakt zu Holen mit der aktuellen version. Ich bin mir sicher, dass dies getan wurde, vor.
Die widgetset-Projekt baut Geldstrafe in TeamCity. Die Gläser und poms sind richtig hochgeladen von nexus. Ich habe ausgepackt, die Gläser, um sicherzustellen, dass alles an seinem Platz. So weit So gut.
In eclipse, das Projekt nicht Holen das widgetset Artefakt und enthält es in seiner Bibliothek. Scheint gut zu sein.
Jedoch, wenn ich ein "mvn clean package" auf der base-Projekt von eclipse und führen Sie es auf Tomcat, bekomme ich die folgende Fehlermeldung im browser:
Failed to load the widgetset: ./VAADIN/widgetsets/com.example.somerandomapp.web.AppWidgetSet/com.example.somerandomapp.web.AppWidgetSet.nocache.js?1376642850734
Wenn ich die Projektstruktur finde ich nicht VAADIN/widgetset-Ordner in den Zielordner. Darüber hinaus wird in der maven-dependency-jar-Datei gibt es eine VAADIN-Ordner mit gwt-unitCache und eine VAADIN.widgetsets-Ordner, der die widgetset-leckereien, sowie den in der Fehlermeldung genannten Datei.
Ich nicht bekommen kann meinen Kopf herum diese. Ich bin kein maven pro, vielleicht habe ich etwas verpasst trivial es. Auch ich bin kein Vaadin pro, also kann ich auch etwas verpasst haben, nur so trivial es.
Ich hoffe wirklich, dass es jemanden da draußen, der könnte mir helfen, dieses Schiff in das Wasser. Ich würde es sehr zu schätzen!
Vaadin version: 7.1.1
Maven version: 3.0.4
Meine Basis-Projekt pom.xml (weglassen von einigen Sachen aus Platzgründen):
<dependencies>
<!-- Some Random App - Commons -->
<dependency>
<groupId>com.example.somerandomapp.common</groupId>
<artifactId>somerandomapp-common-widgetset</artifactId>
<version>0.0.5-SNAPSHOT</version>
</dependency>
<!-- Vaadin -->
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-server</artifactId>
<version>${vaadin.version}</version>
</dependency>
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-client-compiled</artifactId>
<version>${vaadin.version}</version>
</dependency>
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-client</artifactId>
<version>${vaadin.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-push</artifactId>
<version>${vaadin.version}</version>
</dependency>
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-themes</artifactId>
<version>${vaadin.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${javax-servlet-api.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>${maven-war-plugin.version}</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
Meine widgetset-pom (weglassen von einigen Sachen aus Platzgründen):
<!-- same Vaadin-plugins as in the "base project" -->
<!-- maven compiler, release, javadoc, deploy and source artifacts -->
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>${maven-clean-plugin.version}</version>
<configuration>
<filesets>
<fileset>
<directory>src/main/webapp/VAADIN/widgetsets</directory>
</fileset>
</filesets>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>${maven-jar-plugin.version}</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
<excludes>
<exclude>VAADIN/widgetsets/WEB-INF/**</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-maven-plugin</artifactId>
<version>${vaadin-plugin.version}</version>
<configuration>
<extraJvmArgs>-Xmx512M -Xss1024k</extraJvmArgs>
<!-- <runTarget>mobilemail</runTarget> -->
<!-- We are doing "inplace" but into subdir VAADIN/widgetsets. This
way compatible with Vaadin eclipse plugin. -->
<webappDirectory>${project.build.outputDirectory}/VAADIN/widgetsets</webappDirectory>
<hostedWebapp>${project.build.outputDirectory}/VAADIN/widgetsets</hostedWebapp>
<noServer>true</noServer>
<!-- Remove draftCompile when project is ready -->
<draftCompile>false</draftCompile>
<compileReport>true</compileReport>
<style>OBF</style>
<strict>true</strict>
<runTarget>http://localhost:8080/</runTarget>
</configuration>
<executions>
<execution>
<goals>
<goal>clean</goal>
<goal>resources</goal>
<goal>update-theme</goal>
<goal>update-widgetset</goal>
<goal>compile-theme</goal>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<!--This plugin's configuration is used to store Eclipse m2e settings
only. It has no influence on the Maven build itself. -->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-maven-plugin</artifactId>
<versionRange>[7.1.1,)</versionRange>
<goals>
<goal>update-theme</goal>
<goal>resources</goal>
<goal>compile-theme</goal>
<goal>update-widgetset</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
Update:
Ich habe meine setup-MainUI Klasse wie folgt aus:
@WebServlet(value = {"/foo/*", "/VAADIN/*"} , asyncSupported = true)
@VaadinServletConfiguration(productionMode = false, ui = MainUI.class, widgetset = "com.example.somerandomapp.common.widgetset.AppWidgetSet")
Merkte ich, das hat etwas zu tun mit es und verändert es auf die richtige widgetset. Aber ich bekomme immer noch den gleichen Fehler:
Failed to load the widgetset: ./VAADIN/widgetsets/com.example.somerandomapp.common.widgetset.AppWidgetSet/com.example.somerandomapp.common.widgetset.AppWidgetSet.nocache.js?1376662202437
Nun, dieser Fehler zeigt den richtigen Pfad zu der nocache-Datei in den classpath, das macht mich sehr irritiert, denn die Datei ist da, in der lib-Ordner.
Ich hoffe, dies trifft nicht zu verwechseln Sie weiter....
Update 2:
Eigentlich ist dies ausreichend:
@WebServlet(value = "/*", asyncSupported = true)
@VaadinServletConfiguration(productionMode = false, ui = MainUI.class, widgetset = "com.example.somerandomapp.common.widgetset.AppWidgetSet")
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die änderung sehen Sie nach dem update meiner OP war, was fehlte.
Ich bin mir nicht sicher, warum Vaadin finde nicht die Ressourcen, die auf den ersten, aber nachdem ich wischte mir die "Basis-Projekt" von der Festplatte und erneut holte es aus dem SVN, hat ein Projekt sauber und maven-update drauf, sowie ein Tomcat-Arbeitsverzeichnis sauber, es magisch gearbeitet. Ich denke, es gab einige Cache-Inhalt herum. Ich hoffe, dies kann helfen, für alle anderen, die ausbrechen wollen das Vaadin-widgetsets zu einem Projekt seiner eigenen!
Finden Vaadin-wiki (Sie finden pom.xml Beispiel hier)
Müssen Sie widgetset kompilieren mit GWT-maven-plugin (Es ist ein bisschen schwierig, mit diesem plugin cuz Sie haben zu download GWT SDK glaube ich)
com.vaadin.DefaultWidgetSet
. Also, ich, die Sie verwenden möchten widgetset mit dem Namencom.example.somerandomapp.common.widgetset.AppWidgetSet
ist es "Ihre eigenen" widgetset trotz erbt und nur die Standard-vaadin-widgetset. Also, wie auch immer Sie haben, um es zu kompilieren mit GWT. Oder ich weiß nicht, ob es funktionieren würde, aber Sie können kopieren Standard widgeset von vaadin-client-zusammengestellt, um webapps/VAADIN und benennen Sie Sie in Ihren Namensraum.