• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

What is dependencies compile mean in maven plugin pages

 
Ranch Hand
Posts: 308
  • Number of slices to send:
    Optional 'thank-you' note:
For example, In this page
https://jarcasting.com/artifacts/org.hibernate/hibernate-tools-maven-plugin/5.6.2.Final/

In the dependences section, it show compile(2), then write down two jar name
org.hibernate : hibernate-tools jar 5.6.2.Final
org.apache.maven : maven-plugin-api jar 3.5.2

is this mean in pom.xml, if I want to use this plugin


I must add


that is, the final result is

 
Saloon Keeper
Posts: 15608
366
  • 1
  • Number of slices to send:
    Optional 'thank-you' note:
No.

Plugin dependencies and transitive dependencies are pulled in automatically. You only have to declare the plugin.
 
peter tong
Ranch Hand
Posts: 308
  • Number of slices to send:
    Optional 'thank-you' note:
Then why I always see website will shown the compile dependencies, provided dependencies...etc? like
https://mvnrepository.com/artifact/org.hibernate/hibernate-tools-maven-plugin/5.6.2.Final

https://jarcasting.com/artifacts/org.hibernate/hibernate-tools-maven-plugin/5.6.2.Final/

What is the function of this information?
 
Stephan van Hulst
Saloon Keeper
Posts: 15608
366
  • 1
  • Number of slices to send:
    Optional 'thank-you' note:
It's so you know what transitive dependencies will be included in your application automatically. Maybe you don't want them because the licence terms are incompatible, or maybe you don't like or need those dependencies for another reason, and you can explicitly exclude them.

It's just information. Don't worry about it.
 
Bartender
Posts: 2421
13
  • 1
  • Number of slices to send:
    Optional 'thank-you' note:
Here is a discussion about the difference between dependency and plugin.
https://stackoverflow.com/questions/11881663/what-is-the-difference-in-maven-between-dependency-and-plugin-tags-in-pom-xml

Here is a quote from this disucssion:

Indeed some plugins may need to have some dependencies in the classpath during their execution. That is not common but that may happen.

 
peter tong
Ranch Hand
Posts: 308
  • Number of slices to send:
    Optional 'thank-you' note:
Still using above link as example
https://mvnrepository.com/artifact/org.hibernate/hibernate-tools-maven-plugin/5.6.2.Final

then what is the provided dependencies mean? org.apache.maven.plugin-tools » maven-plugin-annotations


who "provide" this dependencies to Hibernate Tools Maven Plugin » 5.6.2.Final?

In eclipse > Maven Dependencies, I cannot see the provided dependencies, "org.apache.maven.plugin-tools » maven-plugin-annotations".
 
Stephan van Hulst
Saloon Keeper
Posts: 15608
366
  • 1
  • Number of slices to send:
    Optional 'thank-you' note:
When you declare a dependency, you can also declare a scope. The most common ones are:

  • compile
  • test
  • runtime
  • provided

  • The compile scope means that the dependency is needed at compile time, test time AND runtime.

    The test scope means that the dependency is only needed to build and run tests.

    The runtime scope means the dependency is not needed to build the application, but only t run it.

    The provided scope means that the dependency is needed at compile time, but it doesn't need to be available at runtime (usually because the platform that the application is running in already provides the classes that are part of the dependency, hence the name "provided").

    hibernate-tools-maven-plugin declares that it needs maven-plugin-annotations to build itself, but it doesn't need the dependency when the plugin runs.
     
    peter tong
    Ranch Hand
    Posts: 308
    • Number of slices to send:
      Optional 'thank-you' note:
    then who provide the "maven-plugin-annotations"? And what is the usage to list the provided dependencies?
     
    Stephan van Hulst
    Saloon Keeper
    Posts: 15608
    366
    • 1
    • Number of slices to send:
      Optional 'thank-you' note:
    At compile time, it is provided by your configured Maven repositories, just like any other dependency.

    At run time, a provided dependency is simply "expected to be there". What that means exactly depends on what the dependency is used for.

    A very common use case for provided dependencies are Jakarta EE APIs. An example is the Jakarta Servlet API. If you've ever written a servlet-based web application, you probably had a dependency on either the Jakarta Servlet API, or the Jakarta EE Platform API. You need these dependencies to compile your application, but you don't need to include it with your application when you deploy it, because a web container such as Tomcat is already expected to provide the Servlet API.

    Another example is when you're building an add-in for another application. Your add-in might depend on some API that is provided by the application that your add-in hooks into, but it doesn't need to be released with that dependency because the application that hosts the add-in is already expected to provide the API.

    There is a third use case, and this is the use case that applies to maven-plugin-annotations. When the dependency contains solely annotations that are processed at compile-time only, it would be pointless to include the dependency at run time, because the dependency doesn't actually do anything at run time. At run time, the dependency isn't provided by anything at all, because it isn't needed. In this case, the scope name "provided" is a bit of a misnomer. You should instead interpret it as "needed at compile time only".
     
    Stephan van Hulst
    Saloon Keeper
    Posts: 15608
    366
    • 1
    • Number of slices to send:
      Optional 'thank-you' note:

    peter tong wrote:And what is the usage to list the provided dependencies?


    Again, it's just useful information. It's good to know what software you are using in your application, especially if you haven't written it yourself.

    What if the software licenses conflict with your application? What if the transitive dependency has a well known security bug? What if you just don't want to use software that was written by a certain company?

    It's like the list of ingredients on the packaging of some product you buy at the grocery store. You may choose to ignore it. But it's still a good thing that everyone can look up the ingredients if they want to.
    reply
      Bookmark Topic Watch Topic
    • New Topic
    vceplus-200-125    | boson-200-125    | training-cissp    | actualtests-cissp    | techexams-cissp    | gratisexams-300-075    | pearsonitcertification-210-260    | examsboost-210-260    | examsforall-210-260    | dumps4free-210-260    | reddit-210-260    | cisexams-352-001    | itexamfox-352-001    | passguaranteed-352-001    | passeasily-352-001    | freeccnastudyguide-200-120    | gocertify-200-120    | passcerty-200-120    | certifyguide-70-980    | dumpscollection-70-980    | examcollection-70-534    | cbtnuggets-210-065    | examfiles-400-051    | passitdump-400-051    | pearsonitcertification-70-462    | anderseide-70-347    | thomas-70-533    | research-1V0-605    | topix-102-400    | certdepot-EX200    | pearsonit-640-916    | itproguru-70-533    | reddit-100-105    | channel9-70-346    | anderseide-70-346    | theiia-IIA-CIA-PART3    | certificationHP-hp0-s41    | pearsonitcertification-640-916    | anderMicrosoft-70-534    | cathMicrosoft-70-462    | examcollection-cca-500    | techexams-gcih    | mslearn-70-346    | measureup-70-486    | pass4sure-hp0-s41    | iiba-640-916    | itsecurity-sscp    | cbtnuggets-300-320    | blogged-70-486    | pass4sure-IIA-CIA-PART1    | cbtnuggets-100-101    | developerhandbook-70-486    | lpicisco-101    | mylearn-1V0-605    | tomsitpro-cism    | gnosis-101    | channel9Mic-70-534    | ipass-IIA-CIA-PART1    | forcerts-70-417    | tests-sy0-401    | ipasstheciaexam-IIA-CIA-PART3    | mostcisco-300-135    | buildazure-70-533    | cloudera-cca-500    | pdf4cert-2v0-621    | f5cisco-101    | gocertify-1z0-062    | quora-640-916    | micrcosoft-70-480    | brain2pass-70-417    | examcompass-sy0-401    | global-EX200    | iassc-ICGB    | vceplus-300-115    | quizlet-810-403    | cbtnuggets-70-697    | educationOracle-1Z0-434    | channel9-70-534    | officialcerts-400-051    | examsboost-IIA-CIA-PART1    | networktut-300-135    | teststarter-300-206    | pluralsight-70-486    | coding-70-486    | freeccna-100-101    | digitaltut-300-101    | iiba-CBAP    | virtuallymikebrown-640-916    | isaca-cism    | whizlabs-pmp    | techexams-70-980    | ciscopress-300-115    | techtarget-cism    | pearsonitcertification-300-070    | testking-2v0-621    | isacaNew-cism    | simplilearn-pmi-rmp    | simplilearn-pmp    | educationOracle-1z0-809    | education-1z0-809    | teachertube-1Z0-434    | villanovau-CBAP    | quora-300-206    | certifyguide-300-208    | cbtnuggets-100-105    | flydumps-70-417    | gratisexams-1V0-605    | ituonline-1z0-062    | techexams-cas-002    | simplilearn-70-534    | pluralsight-70-697    | theiia-IIA-CIA-PART1    | itexamtips-400-051    | pearsonitcertification-EX200    | pluralsight-70-480    | learn-hp0-s42    | giac-gpen    | mindhub-102-400    | coursesmsu-CBAP    | examsforall-2v0-621    | developerhandbook-70-487    | root-EX200    | coderanch-1z0-809    | getfreedumps-1z0-062    | comptia-cas-002    | quora-1z0-809    | boson-300-135    | killtest-2v0-621    | learncia-IIA-CIA-PART3    | computer-gcih    | universitycloudera-cca-500    | itexamrun-70-410    | certificationHPv2-hp0-s41    | certskills-100-105    | skipitnow-70-417    | gocertify-sy0-401    | prep4sure-70-417    | simplilearn-cisa    |
    http://www.pmsas.pr.gov.br/wp-content/    | http://www.pmsas.pr.gov.br/wp-content/    |