Digamos que tengo dos proyectos. CompanyApp y CompanyVaadinThemes.

CompanyApp es una aplicación normal de Vaadin 7.7.3. CompanyVaadinThemesis es solo un tema de Vaadin 7.7.3 compilado en un frasco.

CompanyVaadinThemes.jar

source/main/resources/VAADIN/themes/mytheme
    mytheme.scss
    styles.scss
    ...

CompanyApp.war

pom.xml
    ...
    <dependency>
        <groupId>com.vaadin</groupId>
        <artifactId>vaadin-themes</artifactId>
        <version>${vaadin.version}</version>
    </dependency>
    <dependency>
        <groupId>com.company</groupId>
        <artifactId>company-vaadin-themes</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>


...

UI.java

    @SpringUI
    @Theme("mytheme")
    public class CompanyUI extends UI {

Sin embargo, parece que no puedo averiguar cómo hacer que esto funcione. Si copio el código real de CompanyVaadinThemes.jar en la aplicación principal de CompanyApp, todo está bien. Puedo usar "mytheme", "valo", etc.

Pero quiero mantener el tema real en un proyecto separado para que los proyectos futuros puedan simplemente agregarlo como una dependencia.

Aquí está el pom de CompanyVaadinThemes:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.company</groupId>
    <artifactId>company-vaadin-themes</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
        <vaadin.version>7.7.3</vaadin.version>
        <vaadin.theme>mytheme</vaadin.theme>
        <vaadin.plugin.version>${vaadin.version}</vaadin.plugin.version>
    </properties>

    <repositories>
        <repository>
            <id>vaadin-addons</id>
            <url>http://maven.vaadin.com/vaadin-addons</url>
        </repository>
        <repository>
            <id>com-vaadin-prereleases</id>
            <url>https://maven.vaadin.com/vaadin-prereleases</url>
        </repository>
    </repositories>

    <dependencies>
        <dependency>
            <groupId>com.vaadin</groupId>
            <artifactId>vaadin-server</artifactId>
            <version>${vaadin.version}</version>
            <scope>provided</scope>
        </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>3.0.1</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.2</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>com.vaadin</groupId>
                <artifactId>vaadin-maven-plugin</artifactId>
                <version>${vaadin.version}</version>
            </plugin>

        </plugins>
    </build>
</project>
0
cbmeeks 15 dic. 2016 a las 00:16

2 respuestas

La mejor respuesta

La carpeta VAADIN de su tema debe estar en la raíz de su archivo jar:

VAADIN/themes/mytheme
    mytheme.scss
    styles.scss
1
Henri Kerola 17 dic. 2016 a las 06:51

Los temas personalizados se colocan en la carpeta VAADIN / themes de la aplicación web, en un proyecto de Eclipse en la carpeta WebContent o src / main / webapp en los proyectos de Maven. Esta ubicación es fija. Necesita tener una carpeta de temas para cada tema que use en su aplicación, aunque las aplicaciones rara vez necesitan más de un tema. Después de colocarlos en la carpeta, es fácil llamarlos con la anotación @Theme ("your_theme_goes_here"). También asegúrese de volver a compilar, simplemente limpie y compile para que los cambios funcionen de manera eficiente.

0
DaX 15 dic. 2016 a las 08:20