I think the version specification itself is not a mistake. It's true
that, being autogenerated means it's more difficult to understand,
and now that I've had a look into it, it's really convoluted, but
here is a summary:
- The dependency level of kms-elements is defined in kms-elements/src/server/interface/elements.kmd.json:4.
- For the main Kurento modules (core, elements, filters),
Kurento Module Creator automatically adds an implicit dependency
between them (so elements depends on core, and filters depends
on both elements and core).
- Kurento Module Creator has some routines that convert these
dependency specifications into valid formats for both Maven and
NPM. Caret versions like ^1.2.3 get converted into >=1.2.3
<2.0.0. This, when converted into Maven format,
becomes [1.2.3,2.0.0-SNAPSHOT).
This is not an accident, seeing that the unit tests do actually
check that this conversion is like explained. We can see here
the test for Maven:
assertThat(convertToMavenImport("^1.2.3"),
is("[1.2.3,2.0.0-SNAPSHOT)"));
and here
the test for NPM:
assertThat(convertToNpmImport(null, "^1.2.3"),
is(">=1.2.3 <2.0.0"));
I'm thinking that in theory an application should not pull SNAPSHOT
dependencies if the nightly repository is not enabled in the
project. So, instead of removing the dependency on
7.0.0-SNAPSHOT,
the actual correct way to solve this issue would be to not use the
snapshots repo.
Here is a change that might be the cause of this. For release
6.13.1, I enabled the Kurento snapshots repository by default for
both release and snapshot builds, because there was some problems
with the release process. Maybe this was a mistake after all, and
the change should be reverted. You can see the commit here, it was 7
months ago:
https://github.com/Kurento/kurento-java/commit/966b5b166b14a9166957ca1449d162071405b8cf
I'm thinking that it's worth checking if disabling this does indeed
solve the problem. To do so, you would need to change and install a
customized build of kurento-parent-pom, something like this:
git clone https://github.com/Kurento/kurento-java.git
cd kurento-java/kurento-parent-pom/
editor pom.xml
At the bottom of the file, change the TWO appearances of:
<releases>
<enabled>true</enabled>
</releases>
to:
<releases>
<enabled>false</enabled>
</releases>
Then build and install, from the current working dir
(kurento-parent-pom):
mvn -U -Dmaven.test.skip=true clean install
And now run again your application, using '
-nsu' to make
sure that dependencies are not re-downloaded:
cd /path/to/app/
mvn -nsu clean spring-boot:run [...]
With this the customized parent-pom should enter into effect and the
snapshot repository should be disabled (provided that you're not
depending on any of the 6.14.1-SNAPSHOT versions, but on the 6.14.0
ones).
Let me know if it helps.
--
Juan Navarro
Kurento maintainer & developer
@j1elo at GitHub, Twitter