Maven feature request

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

Maven feature request

Scott Wilson
*Hi Robert and devs*


*I have been using maven for a few years and I LOVE it!*


*I have a feature request.*


*(1) When adding a dependency to pom.xml the default scope is everywhere*

*ie src/main/java/....*

*and src/tst/java/...*


*(2) When adding <test> as the scope then the dependency can ONLY be used
under src/tst/java...*

*If referencing the dependency in src/main/java/... then it will not
compile*


*(3) My feature request:*

*I want the exact opposite. I'd like a new scope called <main>*

*If the scope is <main> then the dependency can ONLY be used under
src/main/java/...*

*If referencing the dependency in tst/main/java/.... then it will not
compile*


*I read up on scopes
(**https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope
<https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope>)
*and
AFAIK this is not currently supported, but I have a specific reason for
wanting this.


*I'd really appreciate if someone can add that for me and let me know when
it's done.*

*Please let me know if you have any questions.*


*Regards*

*Scott Wilson*

*http://linkedin.com/in/hockeyeh <http://linkedin.com/in/hockeyeh>*
Reply | Threaded
Open this post in threaded view
|

Re: Maven feature request

rfscholte
You might be interested in the bannedDependencies rule[1] of the Maven Enforcer Plugin (The Loving Iron Fist of Maven™)

Robert

[1] https://maven.apache.org/enforcer/enforcer-rules/bannedDependencies.html
On 25-1-2020 04:48:46, Scott Wilson <[hidden email]> wrote:
Ok Thank you Elliotte. I've googled checkstyle so will read up on that.

Another solution: I created a dependency-checker.cfg and .sh file that looks for my dependencies in the wrong places and fails if it finds any violations.
It's not as elegant as a checkstyle rule but is a starting point and I'll figure out the checkstyle.

Hey, if you and the rest of your team would like to connect on linkedin I'd love to have you in my network!
linkedin.com/in/HockeyEh [http://linkedin.com/in/HockeyEh]

Scott
linkedin.com/in/HockeyEh [http://linkedin.com/in/HockeyEh]




On Fri, Jan 24, 2020 at 8:34 AM Elliotte Rusty Harold <[hidden email] [mailto:[hidden email]]> wrote:

That's not going to work for the same reason.
classpathDependencyExcludes removes a jar from the classpath, and you
need the jar in the classpath, at least in most circumstances. A
custom checkstyle rule might solve your problem, but you can't do it
by changing the classpath.

On Fri, Jan 24, 2020 at 9:19 AM Scott Wilson <[hidden email] [mailto:[hidden email]]> wrote:

>
> Thank you for replying Elliotte,
> I hired someone on Fiverr to try to figure out a workaround for this. He was not successful however he may have been close. He added <classpathDependencyExcludes> to the build path in the pom.xml. Can you take a look at the attached pom and see if there's anything I can do to make this work? He was using gson in this example.
>
> Scott
>
>
>
> On Fri, Jan 24, 2020 at 5:02 AM Elliotte Rusty Harold <[hidden email] [mailto:[hidden email]]> wrote:
>>
>> That's a really interesting idea and I can see the use of it. I'm not
>> sure it fits with how scopes work in Maven or classpaths in Java
>> though. A scope generally defines which jars are and are not added to
>> the classpaths of which goals/plugins/stages, not which parts of the
>> source tree can see what. Perhaps this would work if your proposed
>> main scope were added to compile and run but not test? However, I
>> suspect the transitive dependencies would still be needed in the
>> classpath or the tests will fail with runtime NoClassDefFoundErrors
>> and the like.
>>
>> What you want sounds a little like strict_java_deps in bazel:
>> https://blog.bazel.build/2017/06/28/sjd-unused_deps.html [https://blog.bazel.build/2017/06/28/sjd-unused_deps.html]
>>
>> On Thu, Jan 23, 2020 at 2:17 AM Scott Wilson <[hidden email] [mailto:[hidden email]]> wrote:
>> >
>> > *Hi Robert and devs*
>> >
>> >
>> > *I have been using maven for a few years and I LOVE it!*
>> >
>> >
>> > *I have a feature request.*
>> >
>> >
>> > *(1) When adding a dependency to pom.xml the default scope is everywhere*
>> >
>> > *ie src/main/java/....*
>> >
>> > *and src/tst/java/...*
>> >
>> >
>> > *(2) When adding <test> as the scope then the dependency can ONLY be used
>> > under src/tst/java...*
>> >
>> > *If referencing the dependency in src/main/java/... then it will not
>> > compile*
>> >
>> >
>> > *(3) My feature request:*
>> >
>> > *I want the exact opposite. I'd like a new scope called <main>*
>> >
>> > *If the scope is <main> then the dependency can ONLY be used under
>> > src/main/java/...*
>> >
>> > *If referencing the dependency in tst/main/java/.... then it will not
>> > compile*
>> >
>> >
>> > *I read up on scopes
>> > (**https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope [https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope]
>> > <https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope [https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope]>)
>> > *and
>> > AFAIK this is not currently supported, but I have a specific reason for
>> > wanting this.
>> >
>> >
>> > *I'd really appreciate if someone can add that for me and let me know when
>> > it's done.*
>> >
>> > *Please let me know if you have any questions.*
>> >
>> >
>> > *Regards*
>> >
>> > *Scott Wilson*
>> >
>> > *http://linkedin.com/in/hockeyeh [http://linkedin.com/in/hockeyeh] <http://linkedin.com/in/hockeyeh [http://linkedin.com/in/hockeyeh]>*
>>
>>
>>
>> --
>> Elliotte Rusty Harold
>> [hidden email] [mailto:[hidden email]]



--
Elliotte Rusty Harold
[hidden email] [mailto:[hidden email]]