Apparently no one had ideas about this. That hurts :)

Just circling back with what ended up being my approach. So we generate a Maven 
project using Swagger Codegen Maven Plugin. I now generate it somewhere below 
the "target/" folder of the POM project that has this configuration. Then use 
the Maven Invoker Plugin in the compile phase to do an install on the generated 
project, and in the deploy phase to do a deploy on the generated project (the 
latter with skipTest=true, to not repeat too much). The later Invoker run also 
has the following configured, so that the generated project ends up in our 
company POM (without itself carrying this information, as the generated project 
is ultimately aimed at public consumption):

<altDeploymentRepository>${project.distributionManagement.snapshotRepository.id}::default::${project.distributionManagement.snapshotRepository.url}</altDeploymentRepository>

I probably left out some small but fancy details. I code reviewed this with 
some colleagues, who praised me for my wicked Maven skills. Now... that's not 
necessarily a good thing, because this is one of those cases where little is 
left from Maven's "convention over configuration" philosophy, and others may 
have a hard time figuring out how this all works. (Including future versions of 
myself. That wouldn't be a first either.)

That's all.



Sander Verhagen
[  san...@sanderverhagen.net  ]

-----Original Message-----
From: Sander Verhagen [mailto:san...@sanderverhagen.net] 
Sent: Saturday, July 22, 2017 01:10
To: Maven Users List <users@maven.apache.org>
Subject: Dealing with a generated project

Hi list,


The REST API of our application is using Swagger for documentation. During 
build we spin up our application, extract the Swagger JSON document, and feed 
it into the Swagger Codegen Maven Plugin to generate an API client. This plugin 
spits out a complete Maven project (and Gradle for that matter), including Java 
files that represent this API client, even Java files with unit tests. Great!

So, now I have a generated project, that's not part of my current Maven build. 
(Could it be?) I've used generated code plenty, but I struggle to fully 
comprehend what the best pattern is for this generated project. I would like 
this project to be published to our Artifactory (its artifact) and to Git (its 
source code). All preferably from the same build. For the publish to Git I'm 
afraid to get into the vendor branch pattern, which I've never done well at. 
I'm anyway not even sure if I'd want to publish to Git on every build, and 
every commit of my application, or maybe publish to Git based on a source JAR 
(is that even a thing?), so yeah, I could use some pointers, if anyone has any 
some good ideas or examples to look at.

Thanks, Sander.



Sander Verhagen
[  san...@sanderverhagen.net<mailto:san...@sanderverhagen.net>  ]


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org

Reply via email to