ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dmitry Pavlov <dpavlov....@gmail.com>
Subject Re: Maven. Issues with flatten plugin
Date Thu, 01 Mar 2018 15:00:17 GMT
Hi,

I think we should solve initial problem: "We have to include all transitive
dependencies into poms". I've faced with it during Direct IO plugin
development.

I am sure it is not best practice. Because 1st level dependency version
change will require us to update 2nd level dependencies manually.

So if we can find solution without disabling plugin, we should prefer it.
If only disable may help we should be sure release installation into
maven-central will be successful.

Sincerely,
Dmitriy Pavlov

чт, 1 мар. 2018 г. в 17:23, Petr Ivanov <mr.weider@gmail.com>:

> Anton, Vyacheslav — are you proposing assembly process shift to package
> phase, yet leaving the special profile for assembly itself?
>
>
>
> > On 1 Mar 2018, at 14:36, Vyacheslav Daradur <daradurvs@gmail.com> wrote:
> >
> > I agree with Anton, especially with the following statement:
> >>> Ignite should be assemblied using package phase,
> >>> not install in case you want only to assembly it.
> >
> > Approach with "install" phase may lead to hidden issues in a
> > development environment.
> >
> > On Thu, Mar 1, 2018 at 2:26 PM, Nikolay Izhikov <nizhikov@apache.org>
> wrote:
> >>> May be it will be enough to add a profile to parent pom.xml which
> >> activates on deploy stage only.
> >>
> >> I think it will be enough to solve my issue.
> >>
> >>> What pom.xml becomes flattened, what is removed from it and how it
> effects
> >> other modules of the same project?
> >>
> >> pom.xml that are installed to local repository is flattened.
> >>
> >>> Yet, I still do not get a mechanism that causes a problem.
> >>
> >> If you want to reproduce it, just do the following steps:
> >>
> >> 1. remove spark dependencies with `scope=test` from `spark/pom.xml`
> >>
> >> 2. run:
> >>
> >> `~/src/ignite/modules/spark> mvn install -U
> >> -Plgpl,examples,scala,-clean-libs,-release,ml
> >> -Dtest=org.apache.ignite.testsuites.IgniteRDDTestSuite
> >> -Dmaven.javadoc.skip=true -DfailIfNoTests=false`
> >>
> >> It will execute OK, because maven uses pom.xml from source.
> >>
> >> 3. run(only root dir is changed)
> >>
> >> `~/src/ignite/> mvn install -U
> >> -Plgpl,examples,scala,-clean-libs,-release,ml
> >> -Dtest=org.apache.ignite.testsuites.IgniteRDDTestSuite
> >> -Dmaven.javadoc.skip=true -DfailIfNoTests=false`
> >>
> >> Test will fail with ClassNoDefFoundError because maven will use
> >> pom.xml from local repository which is flattened.
> >>
> >> 4. remove flatten plugin from `parent/pom.xml`. Re Install parent pom.
> >> Retry step 3. It will succeed.
> >>
> >>
> >> 2018-03-01 14:18 GMT+03:00 Petr Ivanov <mr.weider@gmail.com>:
> >>
> >>> May be it will be enough to add a profile to parent pom.xml which
> >>> activates on deploy stage only.
> >>>
> >>> Yet, I still do not get a mechanism that causes a problem. What pom.xml
> >>> becomes flattened, what is removed from it and how it effects other
> modules
> >>> of the same project?
> >>>
> >>>
> >>>
> >>>> On 1 Mar 2018, at 14:06, Nikolay Izhikov <nizhikov@apache.org>
wrote:
> >>>>
> >>>> Andrey, thank you.
> >>>>
> >>>> If there are no other objections I will create ticket for pom
> structure
> >>>> refactoring.
> >>>>
> >>>> Anton, can you help me with it as an Ignite Release Manager?
> >>>>
> >>>> 2018-03-01 13:45 GMT+03:00 Andrey Novikov <anovikov@apache.org>:
> >>>>
> >>>>> Nikolay,
> >>>>>
> >>>>> I think it can be removed, if parent-pom will be installed(deployed).
> >>>>>
> >>>>> On Thu, Mar 1, 2018 at 5:05 PM, Nikolay Izhikov <nizhikov@apache.org
> >
> >>>>> wrote:
> >>>>>> Hello, Andrey.
> >>>>>>
> >>>>>> Thanks for an answer.
> >>>>>>
> >>>>>>> As I remember we use `flatten-maven-plugin` for flattening
and
> >>> removing
> >>>>> parent relationship in deployed artifacts
> >>>>>>
> >>>>>> So we need it only in `release` profile?
> >>>>>>
> >>>>>> I found some earlier discussion about plugin [1]
> >>>>>>
> >>>>>>> in first versions of build, version was stored in variable
in
> parent
> >>> pom
> >>>>>>
> >>>>>> Got it. Do we need this plugin now?
> >>>>>>
> >>>>>> [1] http://apache-ignite-developers.2346864.n4.nabble.
> >>>>> com/Difference-between-pom-xml-and-pom-installed-xml-td2171.html
> >>>>>>
> >>>>>> В Чт, 01/03/2018 в 16:59 +0700, Andrey Novikov пишет:
> >>>>>>> Nikolay,
> >>>>>>>
> >>>>>>> As I remember we use `flatten-maven-plugin` for flattening
and
> >>>>>>> removing parent relationship in deployed artifacts (parent
pom does
> >>>>>>> not deploy to repository and in first versions of build,
version
> was
> >>>>>>> stored in variable in parent pom)
> >>>>>>>
> >>>>>>> On Thu, Mar 1, 2018 at 4:57 PM, Nikolay Izhikov <
> nizhikov@apache.org>
> >>>>> wrote:
> >>>>>>>> Hello, Petr.
> >>>>>>>>
> >>>>>>>>> Can you describe your problem
> >>>>>>>>
> >>>>>>>> In Ignite, maven doesn't include transitive dependencies
to test
> >>>>> classpath.
> >>>>>>>> So we have enlist all dependencies in project pom.xml.
> >>>>>>>>
> >>>>>>>>> desired behaviour
> >>>>>>>>
> >>>>>>>> All I want is default maven behavior.
> >>>>>>>>
> >>>>>>>> Please, take a look at pom.xml [1] from line 144.
> >>>>>>>> There is a long list of dependencies with `test` scope.
> >>>>>>>> Actually, all of them are available as a transitive
dependency
> from
> >>>>> `spark-core`.
> >>>>>>>>
> >>>>>>>> We doesn't have to enlist them in every other project
that doesn't
> >>>>> use `flatten-plugin`.
> >>>>>>>>
> >>>>>>>> [1] https://github.com/apache/ignite/blob/master/modules/
> >>>>> spark/pom.xml#L144
> >>>>>>>>
> >>>>>>>> В Чт, 01/03/2018 в 11:49 +0300, Petr Ivanov пишет:
> >>>>>>>>> Nikolay,
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> Can you describe your problem and desired behaviour
more
> >>>>> thoroughly, please?
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>> On 28 Feb 2018, at 21:16, Nikolay Izhikov <nizhikov@apache.org>
> >>>>> wrote:
> >>>>>>>>>>
> >>>>>>>>>> Hello, Igniters.
> >>>>>>>>>>
> >>>>>>>>>> We have `flatten-maven-plugin` in `parent/pom.xml`
[1]
> >>>>>>>>>> As far as I can understand it minimize pom.xml
before it
> >>>>> installed in repository.
> >>>>>>>>>>
> >>>>>>>>>> It introduce some strange behavior in modules:
> >>>>>>>>>>
> >>>>>>>>>> I must to enlist all test dependencies in my
module to get tests
> >>>>> work.
> >>>>>>>>>> Otherwise tests fails with ClassNoDefFoundError
for transitive
> >>>>> dependencies.
> >>>>>>>>>> It happens in `spark` [2] and `spark_2.10` [3]
modules.
> >>>>>>>>>> Now, when I want to enable testing of Spark
Examples I has to
> >>>>> enlist same dependencies in `examples/pom.xml`
> >>>>>>>>>>
> >>>>>>>>>> It looks like a mess for me.
> >>>>>>>>>>
> >>>>>>>>>> Please, help me:
> >>>>>>>>>>
> >>>>>>>>>> 1. Am I miss something and can make pom.xml
much clearer?
> >>>>>>>>>>
> >>>>>>>>>> 2. Why we need to minimize pom.xml? It looks
like other Apache
> >>>>> project doesn't do it [5].
> >>>>>>>>>>
> >>>>>>>>>> [1] https://github.com/apache/ignite/blob/master/parent/pom.
> >>>>> xml#L612
> >>>>>>>>>> [2] https://github.com/apache/ignite/blob/master/modules/
> >>>>> spark/pom.xml#L144
> >>>>>>>>>> [3] https://github.com/apache/ignite/blob/master/modules/
> >>>>> spark-2.10/pom.xml#L150
> >>>>>>>>>> [4] https://github.com/apache/ignite/pull/3590/files#diff-
> >>>>> 08740066c64337d38cccd84991ac0912R155
> >>>>>>>>>> [5] http://central.maven.org/maven2/org/apache/kafka/kafka_
> >>>>> 2.12/1.0.0/kafka_2.12-1.0.0.pom
> >>>>>>>>>
> >>>>>>>>>
> >>>>>
> >>>
> >>>
> >
> >
> >
> > --
> > Best Regards, Vyacheslav D.
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message