1

I want to remove class from default jar but keep the same class self-executable jar-with-dependencies.

At this setting, its removed class from both jars and I can't include it back in jar-with-dependencies.

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <phase>package</phase>
                <excludes>
                    <exclude>**/*.java</exclude>
                    <exclude>**/MyClass.class</exclude>
                </excludes>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <createDependencyReducedPom>false</createDependencyReducedPom>
                        <finalName>jar-with-dependencies</finalName>
                        <transformers>
                            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                <mainClass>MyClass</mainClass>
                            </transformer>
                            <transformer
                                    implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                <resource>META-INF/spring.handlers</resource>
                            </transformer>
                            <transformer
                                    implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                <resource>META-INF/spring.schemas</resource>
                            </transformer>
                            <transformer>
                                    implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                <resource>MyClass.class</resource>
                            </transformer>
                        </transformers>
                    </configuration>
                </execution>
            </executions>
        </plugin>
Konstantin
  • 11
  • 2
  • 1
    Care to explain why do you need this? – lexicore Jun 28 '18 at 19:39
  • It is security concern. Default jar suppose to go to production and it should not be executable, plus this class should not be in production jar at all. But jar with dependencies should be executable and will be used in non production environments. – Konstantin Jul 11 '18 at 23:12

0 Answers0