How to add test-jar and jar as dependency in a maven multimodule project?

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

How to add test-jar and jar as dependency in a maven multimodule project?

Debraj Manna
I have a maven multimodule project of the form

- main
  - storage
     - storage-config
     - storage-utils
     - storage-common
    - tools

I have a class `com.vnera.storage.config.Embedded.java` residing under test
folder in `storage-config` which I want to use in `storage-utils` under
`test` scope. `storage-utils` also needs `storage-config` in main phase.

I have added the below section in `storage-config` pom and I am seeing
`test-jar` of `storage-config` is getting generated.

    <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>2.4</version>
                    <executions>
                        <execution>
                            <goals>
                                <goal>test-jar</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>

`storage-utils` pom looks 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>

        <parent>
            <groupId>com.vnera</groupId>
            <artifactId>storage</artifactId>
            <version>0.001-SNAPSHOT</version>
        </parent>

        <packaging>jar</packaging>
        <artifactId>storage-utils</artifactId>
        <name>utils</name>

        <dependencies>
            <dependency>
                <groupId>com.github.fge</groupId>
                <artifactId>json-patch</artifactId>
                <version>1.9</version>
            </dependency>
            <dependency>
                <groupId>com.vnera</groupId>
                <artifactId>storage-config</artifactId>
                <version>${main.version}</version>
            </dependency>
            <dependency>
                <groupId>com.vnera</groupId>
                <artifactId>storage-config</artifactId>
                <version>${main.version}</version>
                <type>test-jar</type>
                <scope>test</scope>
            </dependency>
        </dependencies>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>${mvn.surefire.plugin.version}</version>
                    <configuration>
                        <skipTests>true</skipTests>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>org.apache.maven.surefire</groupId>
                            <artifactId>surefire-junit47</artifactId>

<version>${mvn.surefire.plugin.version}</version>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>2.4</version>
                    <executions>
                        <execution>
                            <goals>
                                <goal>test-jar</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </project>

My compilation is running fine. But whenever I am trying to access
 `Embedded.java` from a class in `storage-utils` in `test` scope. I am
getting `NoClassDefFoundError` for `Embedded.java`.

Can someone let me know what is going wrong and how can I solve this?

Maven Version - 3.5.3
Reply | Threaded
Open this post in threaded view
|

Re: How to add test-jar and jar as dependency in a maven multimodule project?

Debraj Manna
Anyone any thoughts on this?

I have posted the same in stackoverflow
<https://stackoverflow.com/questions/57891875/how-to-add-test-jar-and-jar-as-dependency-in-a-maven-multimodule-project>
also with a lot more details. But did not get much help there also.

On Wed, Sep 11, 2019 at 8:30 PM Debraj Manna <[hidden email]>
wrote:

> I have a maven multimodule project of the form
>
> - main
>   - storage
>      - storage-config
>      - storage-utils
>      - storage-common
>     - tools
>
> I have a class `com.vnera.storage.config.Embedded.java` residing under
> test folder in `storage-config` which I want to use in `storage-utils`
> under `test` scope. `storage-utils` also needs `storage-config` in main
> phase.
>
> I have added the below section in `storage-config` pom and I am seeing
> `test-jar` of `storage-config` is getting generated.
>
>     <plugin>
>                     <groupId>org.apache.maven.plugins</groupId>
>                     <artifactId>maven-jar-plugin</artifactId>
>                     <version>2.4</version>
>                     <executions>
>                         <execution>
>                             <goals>
>                                 <goal>test-jar</goal>
>                             </goals>
>                         </execution>
>                     </executions>
>                 </plugin>
>
> `storage-utils` pom looks 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>
>
>         <parent>
>             <groupId>com.vnera</groupId>
>             <artifactId>storage</artifactId>
>             <version>0.001-SNAPSHOT</version>
>         </parent>
>
>         <packaging>jar</packaging>
>         <artifactId>storage-utils</artifactId>
>         <name>utils</name>
>
>         <dependencies>
>             <dependency>
>                 <groupId>com.github.fge</groupId>
>                 <artifactId>json-patch</artifactId>
>                 <version>1.9</version>
>             </dependency>
>             <dependency>
>                 <groupId>com.vnera</groupId>
>                 <artifactId>storage-config</artifactId>
>                 <version>${main.version}</version>
>             </dependency>
>             <dependency>
>                 <groupId>com.vnera</groupId>
>                 <artifactId>storage-config</artifactId>
>                 <version>${main.version}</version>
>                 <type>test-jar</type>
>                 <scope>test</scope>
>             </dependency>
>         </dependencies>
>         <build>
>             <plugins>
>                 <plugin>
>                     <groupId>org.apache.maven.plugins</groupId>
>                     <artifactId>maven-surefire-plugin</artifactId>
>                     <version>${mvn.surefire.plugin.version}</version>
>                     <configuration>
>                         <skipTests>true</skipTests>
>                     </configuration>
>                     <dependencies>
>                         <dependency>
>                             <groupId>org.apache.maven.surefire</groupId>
>                             <artifactId>surefire-junit47</artifactId>
>
> <version>${mvn.surefire.plugin.version}</version>
>                         </dependency>
>                     </dependencies>
>                 </plugin>
>                 <plugin>
>                     <groupId>org.apache.maven.plugins</groupId>
>                     <artifactId>maven-jar-plugin</artifactId>
>                     <version>2.4</version>
>                     <executions>
>                         <execution>
>                             <goals>
>                                 <goal>test-jar</goal>
>                             </goals>
>                         </execution>
>                     </executions>
>                 </plugin>
>             </plugins>
>         </build>
>     </project>
>
> My compilation is running fine. But whenever I am trying to access
>  `Embedded.java` from a class in `storage-utils` in `test` scope. I am
> getting `NoClassDefFoundError` for `Embedded.java`.
>
> Can someone let me know what is going wrong and how can I solve this?
>
> Maven Version - 3.5.3
>