I have a top-level maven project with submodules. The first submodule is a Java project which generates some JavaScript library code from the compiler's annotation processor. I want to include those generated JS files into the second submodule, a webpack NPM managed project, for the build and then publish the webpack BACK into the first submodule before packaging into a fat-jar. Does anyone know of a way to accomplish this?
Multimodule Maven Project with interdependencies?
225 Views Asked by Deven Phillips At
1
There are 1 best solutions below
Related Questions in MAVEN
- Auto reload with play2
- maven pom.xml dependencies order vs classpath/build path order
- How to ignore or fix the duplicate classes warning?
- Scala Eclipse IDE compiler giving errors until "clean" is run
- How to run multiple "mvn test"-commands from batch file?
- Not able to send email in java using SMTP,its blocked by firewall in my office.Is there any other method by which we can send mail?
- javaCV Maven project
- Logging error when executing Maven SonarQube plugin
- Gradle: Override transitive dependency by version classifier
- Why we need maven if there's javac that compiles the code?
- jar file input == null while java app is working
- JPA and web app
- Test Selector Plugin Jenkins returns No tests were executed
- Eclipse OSGI unsatisfied constraint
- GlassFish 4.0 CDI deployment failure + Apache Spark
Related Questions in MULTI-MODULE
- sbt multi-module project: inter-dependency of integration tests
- Maven project with multiple module and multiple assembly
- How to deal with large multi-module applications on GWT
- Maven Nested Modules - Second Level Children
- Represent a Maven multi module project in a form of graph
- Maven inheritance isn't working with pluginManagement
- How to create Jar from submodules of module?
- Cross-module code coverage with jacoco and gradle multi-module project
- GWT Maven Multi Module
- Bundle Scala-sbt module and UI together
- How do I force Maven to wait for all modules in parallel to finish running?
- JaCoCo configuration when sources and tests classes are in different modules
- Spring Rest MultiModule Project has ClassCastException in requestMappingHandlerMapping()
- Multi module dependencies in maven EAR?
- Spring + Hibernate implementation in multi-modules
Related Questions in MAVEN-REACTOR
- Spring Multi Module project with single war file where all modules depends only on common module
- How do you split mvn reactor into groups of module build by different jenkins jobs?
- Maven reactor: pom using Spring boot starter pom
- Maven Multi-Module Project
- Can't run maven-versions-plugin:set when the parent-child relationship is one-directional and not bi-directional
- maven: do not include module dependency
- Tycho build fails on Jenkins only for SCM Trigger
- Building dependencies of dependents and dependents of dependencies
- Maven reactor with project aggregation and work dir problem
- Dependencies' jar-s copied by maven-dependency-plugin aren't installed to local repository
- What is the difference between using maven -pl option and running maven from module level?
- Can `mvn compile` be expected to work with multi-module Maven reactor builds?
- Build Multi Module project with Maven in Jenkins
- Maven enforcer issue when running from reactor level
- Multimodule Maven Project with interdependencies?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
What you describe is a circular dependency. You have to break this circular dependency. (You probably do similar things in your code all the time.)
I have solved the same problem by breaking up the Java project. Once you do that you will recognize that, in fact, your first project was serving two separate roles that then become separated:
From:
To:
I've often seen this happen in multi-module projects that build into a WAR file, and I've adopted the rule of thumb that the WAR project should not have any Java (production) code, acknowledging its role as the aggregator/assembler.
Some folks will think this third project is frivolous, some always argue that you're easily getting too many Maven modules. I think that often stems from tooling or build pipeline limitations, once you break through those, you can just embrace a growing number of Maven modules, given that the boundaries are chosen well, and I see no problems here.
One hesitation, though: why is the JavaScript project separate to begin with? If it is not deployed separately (evidently it isn't since you're assembling the "fat-jar"), the JavaScript code is following the delivery lifecycle of the "fat-jar", which would benefit from being in the same source repository, so why even make it a separate Maven module? (If they were in separate source repositories, there's a cost in version management between the modules that I'm unsure you have reasons for.) There's no shame in having a monolith (if done well -- it happens, microservices make you believe otherwise, but in that world you'd probably deploy the JavaScript code separately anyway).