On Thursday, February 1, 2018 at 6:11:51 PM UTC+1, Martones wrote:
>
> Hi everyone, and Thomas especially :p
>
> I'm migrating a larger legacy project to the actual GWT standards. I'm
> running into many problems but I'm sure they are all due to my
> misunderstanding of how to wire modules between them. Here is the context
> and my questions :
>
> *My old project structure was (GWT 2.5) : *
>
> Shared: gwt project - pure clientside gwt
> WebUI: gwt project, depending on Shared
> MobileUI: gwt project, depending on Shared
>
>
> *New project (GWT 2.8.2) :*
>
> Right now I'm trying just to have WebUI working, so I'm inspiring from
> Thomas's gwt-maven-archetypes (modular webapp).
>
Beware, the "shared" in these archetypes is meant as "shared between client
and server", where client+shared+server are seen as "a single application"
but are split out due mostly due to how Maven works: client and shared use
the same package, so there's no need for a gwt.xml in the shared library
(for those who know about it, this is somehow similar to a Kotlin
Multiplatform project).
In your case, the "shared" library is client-side only and shared between
GWT applications. Not the same kind of "shared". I would use separate
packages then, and the gwt-lib packaging (which comes with a gwt.xml for
the library): replace <packaging>jar</packaging> with
<packaging>gwt-lib</packaging> (or most likely add it), remove the
maven-source-plugin, add the gwt-maven-plugin with a configured
<moduleName>, and replace the dependencies to it in web-client and
mobile-client to a single dependency with <type>gwt-lib</type>.
> My architecture is :
>
> - *root-project*
> - pom.xml
> - *shared*
> - pom.xml
> - src/main/module.gwt.xml
> - *web-client*
> - pom.xml
> - src/main/module.gwt.xml
>
> *Questions*
>
> - When I try to gwt:codeserver :
>
> Loading Java files in (project *shared*).
> [ERROR] Errors in 'file:(some *client *project file)'
> No source code is available for type '(some file from *shared *project)' ;
> did you forget to inherit a required module?
>
>
>
Do you have the gwt-maven-plugin in "shared" to process/rename that
module.gwt.xml? Are you missing an <inherits/> to that shared module in
your client's module.gwt.xml?
> Although I have these dependencies set in my *client* pom.xml :
>
> <dependency>
> <groupId>${project.groupId}</groupId>
> <artifactId>*shared*</artifactId>
> <version>${project.version}</version>
> </dependency>
> <dependency>
> <groupId>${project.groupId}</groupId>
> <artifactId>*shared*</artifactId>
> <version>${project.version}</version>
> <classifier>sources</classifier>
> </dependency>
> I also added maven-source-plugin to both *client* and *shared*.
>
> - I have some old gwt .jar dependencies that do not seem to have any
> maven artifacts, how do I properly inherit these? I was thinking about
> <inherits> in module.gwt.xml and adding a <scope>system</scope> dependency
> in pom to link to the JAR.
>
>
The <inherits/> is totally independent from your build tool, so if you
needed it, you still need it.
I would recommend publishing the JARs to a Maven repository and use
standard dependencies, but a system scope should just work.
See https://www.cloudbees.com/blog/playing-trade-offs-maven
>
> - I'm running codeserver in the *root-project* right now, is that ok
> even when I would like to serv my *mobile* sub-project ? (Using
> "modules" parameter I suppose)
>
>
Yes. codeserver would then serve both apps by default, unless you "filter"
them using the "projects" or "modules" parameter, or just Maven's "-pl
mobile-client -am"
--
You received this message because you are subscribed to the Google Groups "GWT
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.