playframework / playframework/play1

dependency resolution breaks precompiled

Open
#1,451 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Java
Stars
1.6k
Forks
671
Avg merge
12d 15h
Merged PRs (30d)
1

Description

Play Version (1.5.x / etc)

latest github master

Operating System (Ubuntu 15.10 / MacOS 10.10 / Windows 10)

linux

JDK (Oracle 1.8.0_72, OpenJDK 1.8.x, Azul Zing)

16.0.2

Expected Behavior

Adding apache commons text 1.10.0 to my dependencies.yml works for precompiled

Actual Behavior

apache commons text can be used in everything but precompiled, because it's a dependency of play now. Once I precompile, I get a NoClassDefFoundError runtime (not during precompile).

I compared regular 1.7.1 with github master and with regular 1.7.1 this works, on master it breaks. Not sure if it's due to commons text being added to the dependencies or something else.

Also found out that doing a simple play dependencies --sync lists apache commons-text on regular 1.7.1 under Installing resolved dependencies,, while doing the same on github master does NOT list it as installed dependency.

I assume that this either has something to do with something that changed around the classloader, or it might always have been a bug and is just now visible due to the play framework adding apache commons text 1.10.0 as dependency.

I already tried just using force:true, but it did not change anything. Also, I couldn't really find much information on how the play dependency resolution is implemented - is it just running ivy commands underneath?

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the issue using dependencies.yml with apache commons-text 1.10.0, then compare play dependencies --sync and precompiled runtime behavior between regular 1.7.1 and GitHub master. Trace the dependency-resolution or classloader path involved in precompilation; done means commons-text is available at runtime without NoClassDefFoundError.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
build-system
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.