Monk789
Monk789

Reputation: 183

How to manage compile time dependencies in Maven

Trying to avoid the use of jargon, so that I don't get misinterpreted.

Here is the scenario, My project requires a jar in order to get compiled(let say x.jar). My project get once compiled gets converted into a WAR file, which gets deployed somewhere.
Now I want x.jar just to be there for my project to compile and it should not be packed(or part of) inside WAR file.

How can I do this in Maven ? should I used dependency scope as "provided"

Upvotes: 2

Views: 3117

Answers (1)

Behe
Behe

Reputation: 7940

You are right, as stated in the Maven FAQs, the scope to use is provided,

How do I prevent including JARs in WEB-INF/lib? I need a "compile only" scope! The scope you should use for this is provided. This indicates to Maven that the dependency will be provided at run time by its container or the JDK, for example.

Dependencies with this scope will not be passed on transitively, nor will they be bundled in an package such as a WAR, or included in the runtime classpath.

To quickly try it out, you can use

mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-webapp

to generate a "toy webapp" project, add a dependency to your project and set it to <scope>provided</scope>.

Upvotes: 2

Related Questions