2

我正在尝试创建一个简单的主题(使用 Chameleon 和一些自定义 css 和图像等),我已经完成了。

问题是我想将它包装在一个 maven 项目中并作为依赖项从其他 Vaadin 项目中引用,因此我可以以相同的方式为我的所有 Vaadin 应用程序设置主题 - 甚至更好地将其作为父项目的依赖项,以便整个应用程序的样式相同,我可以为不同的客户重新设计它。

我不确定如何打包和部署主题项目,以便它可以从其他项目中使用?我应该把它变成一个战争项目——但是其他项目如何“完成它”?他们将在他们自己的 VAADIN/themes 目录下寻找主题——而不是在那里复制它(不知何故),我怎么能让他们引用一个副本?

4

2 回答 2

0

我想我找到了一种方法 - 不确定这是不是最好的方法,因为它将主题 css 复制到多个战争项目中,而不是创建一个共享实例,但唯一的另一种方法是做一些巧妙的服务器配置以在项目之间共享一个 url或者其他的东西。

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

于 2012-07-02T20:30:00.910 回答
0

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

我在父项目中有一个基本主题,它在客户的配置项目中进行了扩展。配置项目只是将战争用作运行时依赖项,并且父项目的文件被覆盖,如此所述。

只需在客户端项目中添加依赖即可:

<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-war-plugin 配置中设置属性 true ,如果需要调试,也可以使用 maven-source-plugin 附加源:

<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>
于 2012-07-03T07:19:43.297 回答