From 2e95afa00f0a3cad97e3d02c3cec2e1ca32f369c Mon Sep 17 00:00:00 2001 From: "Matteo Franci a.k.a. Fugerit" Date: Tue, 25 Mar 2025 11:43:49 +0100 Subject: [PATCH] [fj-doc-maven-plugin] goal 'add' new param 'simpleModel' #350 --- CHANGELOG.md | 4 ++ .../chapters/02_1_maven_plugin_add.adoc | 1 + .../org/fugerit/java/doc/maven/MojoAdd.java | 4 ++ .../doc/project/facade/BasicVenusFacade.java | 46 +++++++++++++++---- .../java/doc/project/facade/VenusContext.java | 3 ++ .../project/facade/TestAddVenusFacade.java | 25 ++++++++++ .../src/test/resources/ok3-pom/pom.xml | 1 + .../src/test/resources/ok5-pom/pom.xml | 38 +++++++++++++++ 8 files changed, 114 insertions(+), 8 deletions(-) create mode 100644 fj-doc-maven-plugin/src/test/resources/ok5-pom/pom.xml diff --git a/CHANGELOG.md b/CHANGELOG.md index 7b7ce0965..ce36d57e7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- [fj-doc-maven-plugin] goal 'add' new param 'simpleModel' + ### Fixed - [fj-doc-freemarker] handling of svg in html handler diff --git a/fj-doc-guide/src/main/docs/asciidoc/chapters/02_1_maven_plugin_add.adoc b/fj-doc-guide/src/main/docs/asciidoc/chapters/02_1_maven_plugin_add.adoc index d50981cde..c9b5e45fd 100644 --- a/fj-doc-guide/src/main/docs/asciidoc/chapters/02_1_maven_plugin_add.adoc +++ b/fj-doc-guide/src/main/docs/asciidoc/chapters/02_1_maven_plugin_add.adoc @@ -28,6 +28,7 @@ mvn org.fugerit.java:fj-doc-maven-plugin:add \ | addLombok | true | true | If set to true, it will add lombok (provided scope) and slf4j-simple (test scope) | addDependencyOnTop | true | false | If set to true, added dependencies will be added before existing ones | freemarkerVersion | true | 2.3.32 | Freemarker compatibility version (max 2.3.33) +| simpleMpdel | true | false | If set to true, modification to pom.xml will be light, dependencies for addLombok and addJunit will be ignored. addVerifyPlugin param will be ignored. |==================================================================================================================================================================================== [#available-extensions] diff --git a/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/maven/MojoAdd.java b/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/maven/MojoAdd.java index ec5e9ef1c..0a0ac1ffa 100644 --- a/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/maven/MojoAdd.java +++ b/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/maven/MojoAdd.java @@ -50,6 +50,9 @@ public class MojoAdd extends AbstractMojo { @Parameter(property = "freemarkerVersion", defaultValue = "2.3.32", required = true) protected String freemarkerVersion; + @Parameter(property = "simpleModel", defaultValue = "false", required = true) + protected boolean simpleModel; + protected String groupIdOverride; protected String artifactIdOverride; @@ -70,6 +73,7 @@ public void execute() throws MojoExecutionException, MojoFailureException { context.setFreemarkerVersion( this.freemarkerVersion ); context.setGroupIdOverride( this.groupIdOverride ); context.setArtifactIdOverride( this.artifactIdOverride ); + context.setSimpleModel( this.simpleModel ); this.getLog().info( String.format( "add execute() context : %s", context ) ); AddVenusFacade.addToProject( context ); } diff --git a/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/BasicVenusFacade.java b/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/BasicVenusFacade.java index 636044d35..d74a8a032 100644 --- a/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/BasicVenusFacade.java +++ b/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/BasicVenusFacade.java @@ -140,15 +140,45 @@ protected static void addExtensionList( File pomFile, VenusContext context ) thr } } ); } - // addJunit5 parameter - addJunit5( model, context ); - // addLombok parameter - addLombok( model, context ); - log.info( "end dependencies size : {}", model.getDependencies().size() ); - addPlugin( context, model ); - try (OutputStream pomStream = new FileOutputStream( pomFile ) ) { - modelIO.writeModelToStream( model, pomStream ); + if ( context.isSimpleModel() ) { + log.warn( "simpleModel true : skipping extra dependencies and plugin" ); + handleSimpleModel( pomFile, context, moduleList ); + } else { + // addJunit5 parameter + addJunit5( model, context ); + // addLombok parameter + addLombok( model, context ); + addPlugin( context, model ); + log.info( "end dependencies size : {}", model.getDependencies().size() ); + try (OutputStream pomStream = new FileOutputStream( pomFile ) ) { + modelIO.writeModelToStream( model, pomStream ); + } + } + } + + private static void handleSimpleModel( File pomFile, VenusContext context, List moduleList ) throws IOException { + String pomText = FileIO.readString( pomFile ); + // add property fj-doc-version + String properties = ""; + int endPropertiesIndex = pomText.indexOf( properties ); + if ( endPropertiesIndex != -1 ) { + pomText = String.format( "%s %s%n %s", pomText.substring( 0, endPropertiesIndex ), context.getVersion(), pomText.substring( endPropertiesIndex ) ); + } else { + String modelVersion = ""; + int endArtifactIdIndex = pomText.indexOf( modelVersion )+modelVersion.length(); + pomText = String.format( "%s%n%n %n %s%n %n%s", pomText.substring( 0, endArtifactIdIndex ), context.getVersion(), pomText.substring( endArtifactIdIndex ) ); + } + // add dependencies + String dependencies = ""; + int endDependenciesIndex = pomText.indexOf( dependencies ); + StringBuilder builder = new StringBuilder(); + for ( String moduleName : moduleList ) { + builder.append( String.format( "%n %n org.fugerit.java%n %s%n ${fj-doc-version}%n ", moduleName ) ); } + pomText = String.format( "%s %s%n%n %s", pomText.substring( 0, endDependenciesIndex ), builder, pomText.substring( endDependenciesIndex ) ); + // write pom file + FileIO.writeString( pomText, pomFile ); + log.warn( "simpleModel enabled, consider adding fj-doc-maven-plugin:verify and other configurations. (https://venusdocs.fugerit.org/guide/#maven-plugin-entry)" ); } private static final String CONST_IMPLEMENTATION = "implementation"; diff --git a/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/VenusContext.java b/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/VenusContext.java index 63bb1b6c1..bc298e9d5 100644 --- a/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/VenusContext.java +++ b/fj-doc-maven-plugin/src/main/java/org/fugerit/java/doc/project/facade/VenusContext.java @@ -87,6 +87,9 @@ public static String toResourcePathFmConfigXml( String artifactId ) { @Getter @Setter private String artifactIdOverride; + @Getter @Setter + private boolean simpleModel; + public void setExcludeXmlApis( boolean excludeXmlApis ) { if ( excludeXmlApis ) { this.setAddExclusions( "xml-apis:xml-apis" ); diff --git a/fj-doc-maven-plugin/src/test/java/test/org/fugerit/java/doc/project/facade/TestAddVenusFacade.java b/fj-doc-maven-plugin/src/test/java/test/org/fugerit/java/doc/project/facade/TestAddVenusFacade.java index d765ef89d..1b0e9e0e1 100644 --- a/fj-doc-maven-plugin/src/test/java/test/org/fugerit/java/doc/project/facade/TestAddVenusFacade.java +++ b/fj-doc-maven-plugin/src/test/java/test/org/fugerit/java/doc/project/facade/TestAddVenusFacade.java @@ -95,6 +95,31 @@ public void execute() throws MojoExecutionException, MojoFailureException { } } + @Test + public void testMojoAddSimpleModel() throws IOException, MojoExecutionException, MojoFailureException { + for ( String current : Arrays.asList( "ok3-pom", "ok5-pom" ) ) { + for ( String currentConfig : Arrays.asList( current ) ) { + File projectDir = this.initConfigWorker( currentConfig ); + MojoAdd mojoAdd = new MojoAdd() { + @Override + public void execute() throws MojoExecutionException, MojoFailureException { + this.version = "8.12.5"; + this.extensions = "fj-doc-base,fj-doc-base-json,fj-doc-base-yaml,fj-doc-freemarker,fj-doc-mod-fop,fj-doc-mod-poi,fj-doc-mod-opencsv"; + this.projectFolder = projectDir.getAbsolutePath(); + this.addDocFacade = true; + this.force = true; + this.excludeXmlApis = true; + this.simpleModel = true; + super.execute(); + } + }; + mojoAdd.execute(); + Assert.assertTrue( projectDir.exists() ); + } + } + } + + @Test public void testFail() { VenusContext context = new VenusContext( new File( "target" ), this.getVersion(),"base" ); diff --git a/fj-doc-maven-plugin/src/test/resources/ok3-pom/pom.xml b/fj-doc-maven-plugin/src/test/resources/ok3-pom/pom.xml index b08c74c4d..ec1d5baf1 100644 --- a/fj-doc-maven-plugin/src/test/resources/ok3-pom/pom.xml +++ b/fj-doc-maven-plugin/src/test/resources/ok3-pom/pom.xml @@ -32,6 +32,7 @@ org.fugerit.java fj-core + 8.6.6 diff --git a/fj-doc-maven-plugin/src/test/resources/ok5-pom/pom.xml b/fj-doc-maven-plugin/src/test/resources/ok5-pom/pom.xml new file mode 100644 index 000000000..78fd548ab --- /dev/null +++ b/fj-doc-maven-plugin/src/test/resources/ok5-pom/pom.xml @@ -0,0 +1,38 @@ + + 4.0.0 + + fjdocmavenpluginok5 + org.fugerit.java.test + 1.0.0-SNAPSHOT + + Fugerit Doc Maven Plugin Ok POM Test 4 + + + + Apache License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + repo + + + + + 8.6.6 + + + + https://www.fugerit.org + Fugerit + + + https://www.fugerit.org/ + + + + org.fugerit.java + fj-core + ${fj-core-version} + + + +