Java Gwt Maven多模块。如何配置依赖项以将请求工厂代理放在共享模块中?
Gwt项目由三部分组成:Java Gwt Maven多模块。如何配置依赖项以将请求工厂代理放在共享模块中?,java,xml,maven,gwt,multi-module,Java,Xml,Maven,Gwt,Multi Module,Gwt项目由三部分组成:客户端、共享和服务器 我想用maven创建这个结构,但对于gwt应用程序的每个部分,我希望有单独的模块 所以我有一个maven项目。它由4个模块组成: 父模块 网络模块 共享模块 服务器模块 我想把请求工厂代理接口放在共享模块中。我该怎么做 我当前的pom.xml配置不允许这样做。我收到错误,即: 无法将服务器模块中的类解析为类型 以下是我的配置: 1。父模块没有任何类或GWT配置。 它只有pom.xml。它关闭了其余的模块。以下是pom.xml: <?xml
客户端
、共享
和服务器
我想用maven创建这个结构,但对于gwt应用程序的每个部分,我希望有单独的模块
所以我有一个maven项目。它由4个模块组成:
请求工厂代理
接口放在共享
模块中。我该怎么做
我当前的pom.xml配置不允许这样做。我收到错误,即:
无法将服务器模块中的类解析为类型
以下是我的配置:
1。父模块没有任何类或GWT配置。 它只有
pom.xml
。它关闭了其余的模块。以下是pom.xml:
<?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.test</groupId>
<artifactId>parent</artifactId>
<packaging>pom</packaging>
<version>1.0.0-SNAPSHOT</version>
<modules>
<module>server</module>
<module>shared</module>
<module>web</module>
</modules>
<dependencies>
</dependencies>
<build>
</build>
</project>
和pom.xml
:
<?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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>pl.derp</groupId>
<artifactId>parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>web</artifactId>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>pl.derp</groupId>
<artifactId>shared</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>pl.derp</groupId>
<artifactId>server</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<build>
</build>
</project>
<?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>
<parent>
<groupId>pl.derp</groupId>
<artifactId>parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>shared</artifactId>
<packaging>jar</packaging>
<dependencies>
</dependencies>
<build>
</build>
</project>
<?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>
<parent>
<groupId>pl.derp</groupId>
<artifactId>parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>server</artifactId>
<packaging>jar</packaging>
<properties>
</properties>
<dependencies>
<dependency>
<groupId>pl.derp</groupId>
<artifactId>shared</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<build>
</build>
</project>
和pom.xml
:
<?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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>pl.derp</groupId>
<artifactId>parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>web</artifactId>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>pl.derp</groupId>
<artifactId>shared</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>pl.derp</groupId>
<artifactId>server</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<build>
</build>
</project>
<?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>
<parent>
<groupId>pl.derp</groupId>
<artifactId>parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>shared</artifactId>
<packaging>jar</packaging>
<dependencies>
</dependencies>
<build>
</build>
</project>
<?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>
<parent>
<groupId>pl.derp</groupId>
<artifactId>parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>server</artifactId>
<packaging>jar</packaging>
<properties>
</properties>
<dependencies>
<dependency>
<groupId>pl.derp</groupId>
<artifactId>shared</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<build>
</build>
</project>
和pom.xml
:
<?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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>pl.derp</groupId>
<artifactId>parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>web</artifactId>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>pl.derp</groupId>
<artifactId>shared</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>pl.derp</groupId>
<artifactId>server</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<build>
</build>
</project>
<?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>
<parent>
<groupId>pl.derp</groupId>
<artifactId>parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>shared</artifactId>
<packaging>jar</packaging>
<dependencies>
</dependencies>
<build>
</build>
</project>
<?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>
<parent>
<groupId>pl.derp</groupId>
<artifactId>parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>server</artifactId>
<packaging>jar</packaging>
<properties>
</properties>
<dependencies>
<dependency>
<groupId>pl.derp</groupId>
<artifactId>shared</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<build>
</build>
</project>
当我改为使用:
@ProxyForName(“pl.server.GreetingResponse”)
时,它就可以编译了。请提供帮助。您可以使用共享(和客户端)依赖于服务器,因此您可以从@ProxyFor
和@Service
引用服务器端类;但是,您可能会从共享代码和客户端代码中引用服务器端类,并且只有在使用GWT编译器或devmode时(即较晚)才会注意到这一点,因此使用多模块Maven项目绝对没有好处
或者您可以使用@ProxyForName
和@ServiceName
,通过使其隐式化,从服务器上的共享
中释放依赖关系;这样一来,客户端
只依赖于共享
,而不依赖于服务器
您可以在modular requestfactory
Maven原型中看到该方法的一个示例
BTW,我认为一个<代码>服务器/代码> +>代码>共享< /代码> +>代码>客户端<代码>三重奏是一个单一的“单元”(仅在3个层次中人为划分,以容纳Maven限制WRT依赖范围和类似的),并且我只是让它们共享一个通用的根包。(有或没有
服务器
,共享
和客户端
子包)。这样我就可以在客户端
模块中有一个*.gwt.xml
,将客户端和共享文件都带到gwt的“源路径”中;而共享
模块对gwt没有依赖性(只有提供的依赖于requestfactory客户端
或requestfactory服务器
;客户端
将使用gwt用户
,而服务器
将使用requestfactory服务器
或gwt servlet
)。您必须尊重maven结构。
在每个模块的pom所在的目录中,必须有/src目录,您必须在其中保存源代码
Maven在构建模块时查找此目录。
在这里,您可以阅读更多关于此的信息
但我不建议您更改GWT应用程序的标准结构
想想那些希望进一步开发您的代码的开发人员。他们会期望标准,而且他们一开始很难理解其结构。我将深入研究您的原型。似乎比我的更干净。嘿。我看到您在我试图重写的文件中有@ProxyForName
字符串类声明使用类型安全类声明,如:@ProxyFor(value=GreetingResponse.class)
,但我失败了,你能帮忙吗?你可以把服务器
分成两部分:一部分是共享的服务和域对象
可以依赖于true
或提供的(这样,client
就不会继承它;您还可以明确地排除client
中的可传递依赖项);另一部分依赖于第一部分和shared
,来构建webapp。然后,您将拥有webapp
依赖于shared
,client
(编译为JS)而服务器
;共享
依赖于服务器
,客户端
依赖于共享
,但不依赖于服务器
。嘿,我试着遵循你的建议。不幸的是,我在使用请求工厂验证工具时遇到了问题?请再次查看我的帖子。我已经更新了我的新POM。谢谢。如果你愿意的话只使用@ProxyFor
和@Service
(或者更一般地说,如果您在代理类的构建时有可用的“域”类),则可以在共享
中使用注释处理器(requestfactory-apt
依赖项必须存在于编译类路径中,在运行时不存在:使用提供的范围或设置为可选)而不是验证工具。
<?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>
<parent>
<groupId>com</groupId>
<artifactId>mrf</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>mrf-shared</artifactId>
<prerequisites>
<maven>${mavenVersion}</maven>
</prerequisites>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>mrf-domain</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.google.web.bindery</groupId>
<artifactId>requestfactory-apt</artifactId>
</dependency>
<dependency>
<groupId>com.google.web.bindery</groupId>
<artifactId>requestfactory-server</artifactId>
</dependency>
<dependency>
<groupId>com.google.web.bindery</groupId>
<artifactId>requestfactory-client</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-source-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
<?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>
<parent>
<groupId>com</groupId>
<artifactId>mrf</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>mrf-client</artifactId>
<packaging>gwt-app</packaging>
<prerequisites>
<maven>${mavenVersion}</maven>
</prerequisites>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>mrf-shared</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>mrf-shared</artifactId>
<version>${project.version}</version>
<classifier>sources</classifier>
</dependency>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-user</artifactId>
</dependency>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-dev</artifactId>
</dependency>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-codeserver</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>net.ltgt.gwt.maven</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<configuration>
<moduleName>pl.App</moduleName>
<moduleShortName>mrf</moduleShortName>
</configuration>
</plugin>
</plugins>
</build>
</project>
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] mrf ............................................... SUCCESS [0.106s]
[INFO] mrf-domain ........................................ SUCCESS [0.893s]
[INFO] mrf-shared ........................................ SUCCESS [0.277s]
[INFO] mrf-client ........................................ SUCCESS [6.519s]
[INFO] mrf-server ........................................ FAILURE [0.599s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 8.824s
[INFO] Finished at: Mon Oct 05 13:33:27 CEST 2015
[INFO] Final Memory: 28M/311M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.3.2:exec (requestfactory-validation-tool) on project mrf-server: Command execution failed. Process exited with an error: 255 (Exit value: 255) -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.3.2:exec (requestfactory-validation-tool) on project mrf-server: Command execution failed.