如何写一个Vaadin主题,我可以加入我的其他的web应用?(How to write a Vaad

2019-07-30 05:07发布

我试图创建一个简单的主题(使用变色龙和一些自定义的CSS和图像等),我已经做到了。

问题是我想包起来,从其他Vaadin项目作为依赖Maven项目和参考,所以我的主题我所有的Vaadin应用同样的方式 - 甚至更好它作为父项目的依赖,使得整个应用程序被称呼同样的方式,我可以重新皮肤它针对不同的客户。

我不知道如何打包和部署主题的项目,所以,这将是从其他项目中使用? 我应该把它做成战争项目 - 但再怎么“得到它”做其他项目? 他们会寻找下自己的VAADIN /主题目录中的主题 - 而不是复制它有(不知),我怎么可能只是他们引用一个单一的副本?

Answer 1:

我有同样的问题。 我用战争解决覆盖它。

我在这是在客户机的配置项目扩展父项目一个基本主题。 配置项目只需使用战争作为运行依赖和父项目的文件被覆盖,为解释在这里 。

只需添加在客户端的项目的依赖:

<dependency>
    <groupId>com.mygroup</groupId>
    <artifactId>my-parent-project</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <type>war</type>
    <scope>runtime</scope>
</dependency>

并导入父项目的客户端主题的styles.css的文件的样式:

@import "../parent-theme/styles.css"

并增加客户的风格。

如果您需要使用父项目的类别,你可以设置attachClasses属性真正在Maven的战争插件配置并且还通过使用maven-源插件连接的源,如果你需要它们进行调试:

<plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.1.1</version>
    <configuration>
        <attachClasses>true</attachClasses>
    </configuration>
</plugin>

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
    <version>2.1.2</version>
    <executions>
        <execution>
            <id>attach-sources</id>
            <goals>
                <goal>jar</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <attach>true</attach>
    </configuration>
</plugin>

并且它们包括在客户的项目:

<dependency>
    <groupId>com.mygroup</groupId>
    <artifactId>my-parent-project</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <classifier>classes</classifier>
    <type>jar</type>
    <scope>compile</scope>
</dependency>


Answer 2:

我想我已经找到了一种方法 - 不知道这是最好的方式,因为它复制主题CSS分成多个作战项目,而不是创建一个共享实例,但唯一的另一种方式是做一些聪明的服务器配置要共享项目的URL或者其他的东西。

http://www.ensor.cc/2011/06/mavens-war-overlay-what-are-war.html



文章来源: How to write a Vaadin theme I can include in my other webapps?
标签: maven vaadin