Thanks Maarten.

On Fri, Dec 20, 2019 at 12:07 PM Maarten Mulders <[email protected]> wrote:

> Also cross-posting from StackOverflow [1], where I just answered your
> question:
>
>
> There is a dedicated Spring Boot Maven Plugin [2] that also allows you
> to repackage your application. Its repackage goal automatically
> activates during the package phase, so you don't even need to define an
> execution.
>
> Back to your question, if you want to skip execution of a certain
> plugin, many plugins have a skip property that you can set. The Spring
> Boot Maven Plugin has one. You can set it in the XML configuration, but
> there's also a user property for it. As a result, your dev-local profile
> could look like this:
>
> <profile>
>      <id>dev-local</id>
>      <properties>
>          <spring-boot.repackage.skip>true</spring-boot.repackage.skip>
>      </properties>
> </profile>
>
> But you could even skip the profile completely and invoke Maven with
> -Dspring-boot.repackage.skip=true.
>
> The Maven Shade Plugin [3] has no such property documented, so that
> could be a reason for using the Spring Boot Maven Plugin over the Maven
> Shade Plugin.
>
> Finally, for building applications, you typically don't need mvn clean
> install, but mvn verify would be enough. Saves you a few seconds in
> execution and saves a lot of disk space in the long run since it doesn't
> copy built artifacts to your local Maven repo (~/.m2/repository or
> %userprofile%\.m2\repository).
>
>
> Hope this helps,
>
>
> Maarten
>
> References:
> [1] https://stackoverflow.com/a/59420813/1523342
> [2]
> https://docs.spring.io/spring-boot/docs/current/maven-plugin/index.html
> [3] https://maven.apache.org/plugins/maven-shade-plugin/index.html
>
> On December 20, 2019 at 06:04, Debraj Manna wrote:
>
> > I am cross-posting from stackoverflow
> > <
> https://stackoverflow.com/questions/59393863/skipping-maven-shade-plugin-in-a-spring-boot-project-based-on-maven-profile
> >
> > as I did not get any reply there.
> >
> > I want to skip the execution of maven-shade-plugin when a certain maven
> > profile is activated on a spring-boot project. As mentioned in this
> > answer
> > <https://stackoverflow.com/a/13383092/785523> I have made my pom.xml
> > like
> > below
> >
> > <?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.van.saasinfra</groupId>
> > <artifactId>saas-controller</artifactId>
> > <version>0.001-SNAPSHOT</version>
> > <packaging>jar</packaging>
> >
> > <name>saas-controller</name>
> > <description>SaaS Controller</description>
> >
> > <parent>
> > <groupId>org.springframework.boot</groupId>
> > <artifactId>spring-boot-starter-parent</artifactId>
> > <version>1.5.21.RELEASE</version>
> > <relativePath/> <!-- lookup parent from repository -->
> > </parent>
> >
> > <dependencies>
> > ...
> > </dependencies>
> >
> > <profiles>
> > <profile>
> > <id>dev-local</id>
> > <plugin>
> > <groupId>org.apache.maven.plugins</groupId>
> > <artifactId>maven-shade-plugin</artifactId>
> > <version>${mvn.shade.plugin.version}</version>
> > <executions>
> > <execution>
> > <id>saas-controller-shade</id>
> > <phase>none</phase>
> > </execution>
> > </executions>
> > </plugin>
> > </profile>
> > </profiles>
> >
> > <build>
> > <plugins>
> > <plugin>
> > <artifactId>maven-shade-plugin</artifactId>
> > </plugin>
> > <plugin>
> > <artifactId>maven-antrun-plugin</artifactId>
> > <version>1.8</version>
> > <executions>
> > <execution>
> > <id>generate-sources</id>
> > <phase>generate-sources</phase>
> > <configuration>
> > <target>
> > <mkdir
> > dir="${project.build.directory}/generated-sources"/>
> > <exec executable="protoc">
> > <arg
> > value="--java_out=${project.build.directory}/generated-sources"/>
> > <arg
> > value="--proto_path=${project.basedir}/src/main/proto"/>
> > <arg
> >
> value="${project.basedir}/src/main/proto/com/van/saasinfra/saascontroller/saas-controller.proto"/>
> > <arg
> >
> value="${project.basedir}/src/main/proto/com/van/saasinfra/saascontroller/billing-controller.proto"/>
> > <arg
> >
> value="${project.basedir}/src/main/proto/com/van/saasinfra/saascontroller/node-topology.proto"/>
> > <arg
> >
> value="${project.basedir}/src/main/proto/com/van/saasinfra/saascontroller/availability.proto"/>
> > <arg
> >
> value="${project.basedir}/src/main/proto/com/van/saasinfra/saascontroller/dynamodb-config.proto"/>
> > <arg
> >
> value="${project.basedir}/src/main/proto/com/van/saasinfra/saascontroller/tenant-migration.proto"/>
> > </exec>
> > </target>
> >
> > <sourceRoot>${project.build.directory}/generated-sources/</sourceRoot>
> > </configuration>
> > <goals>
> > <goal>run</goal>
> > </goals>
> > </execution>
> > </executions>
> > </plugin>
> > </plugins>
> > </build></project>
> >
> > But even when doing maven clean install -Pdev-local I am seeing shade
> > step
> > is still getting executed.
> >
> > Can some suggest how to stop the execution of shade when a certain
> > profile
> > is enabled on a spring boot project?
>

Reply via email to