简体   繁体   中英

Jar dependend on classes in war project

Suppose I have a war and jar projects defined in maven.

The Jar project is dependent on the War project

I have managed to get this working in package mode by adding

In the war project <attachClasses> to true in the war plugin.

And making a dependency to

        <groupId>com</groupId>
        <artifactId>oneway-delegator</artifactId>
        <version>1.0</version>
        <classifier>classses</classifier>

in the jar pom.

But when running only compile the classes jar is not created and everything fails.

Any ideas folks ??

But when running only compile the classes jar is not created and everything fails.

You can indeed configure the maven-war-plugin to package/deploy the classes and resources included in your webapp as an "attached" JAR artifact with a classifier with the following configuration:

<project>
  ...
  <artifactId>mywebapp</artifactId>
  <version>1.0-SNAPSHOT</version>
  ...
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>X.Y</version>
        <configuration>
          <attachClasses>true</attachClasses>
        </configuration>
      </plugin>
    </plugins>
  </build>
  ...
</project>

But this artifact is created during the package phase so don't expect it to be there if you run compile only.

Note that this configuration option has been introduced for a very particular use case, the skinny war use case. If you need to re-use this JAR in another project the recommended approach is in general to move the classes to a separate module that builds a JAR, and then declare a dependency on that JAR from your webapp as well as from any other projects that need it.

Don't do this.

That is not an acceptable dependency to make a jar (plain java code) dependent on a war (Java EE specific application package). If you have code in your war that you are dependent on, then that code should be in it's own jar and then both the web app and the jar project would have a common dependency on it.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM