maven add a local classes directory to module's classpath

前端 未结 1 877
没有蜡笔的小新
没有蜡笔的小新 2021-01-07 05:28

I know this is a bit out of maven\'s scope, but I need to add a local directory with compiled classes to the module\'s classpath. I saw: Maven: add a folder or jar file into

相关标签:
1条回答
  • 2021-01-07 06:05

    After some extensive research, I found that my best option was to use the maven-antrun-plugin and during the process-resources phase, generate a jar from the classes and add it as dependency with system scope and systemPath to the jar I just built.

    Pom snippets:

    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.6</version>
    <executions>
        <execution>
            <phase>process-resources</phase>
            <goals>
                <goal>run</goal>
            </goals>
            <configuration>
                <target name="mpower.jar">
                    <taskdef resource="net/sf/antcontrib/antcontrib.properties" classpath="${env.USERPROFILE}\.m2\repository\ant-contrib\ant-contrib\1.0b3\ant-contrib-1.0b3.jar"/>
    
                    <if>
                        <available file="${classes.dir}" type="dir"/>
                        <then>
                            <jar destfile="${env.TEMP}\classes.jar">
                                <fileset dir="${classes.dir}\classes">
                                    <include name="**/**"/>
                                </fileset>
                            </jar>
                        </then>
                        <else>
                            <fail message="${classes.dir} not found. Skipping jar creation"/>
                        </else>
                    </if>
                </target>
            </configuration>
        </execution>
    </executions>
    

    ....

        <dependency>
            <groupId>ant-contrib</groupId>
            <artifactId>ant-contrib</artifactId>
            <version>1.0b3</version>
        </dependency>
        <dependency>
            <groupId>com.my.code</groupId>
            <artifactId>classes.jar</artifactId>
            <version>1.1</version>
            <scope>system</scope>
            <systemPath>${env.TEMP}\classes.jar</systemPath>
        </dependency>
    
    0 讨论(0)
提交回复
热议问题