- INTELLIJ JAR ARTIFACT NOT AVAILABLE IN BUILD HOW TO
- INTELLIJ JAR ARTIFACT NOT AVAILABLE IN BUILD UPGRADE
INTELLIJ JAR ARTIFACT NOT AVAILABLE IN BUILD HOW TO
In this blog post I’m going to show how to create a multi-release JAR file in IntelliJ IDEA. The reason for this split, of course, is that Java 8 itself can’t decide what to do differently when it runs a multi-release JAR file because the functionality only became available in Java 9. This is a little bit sad since obviously Java 8 had some nice features that you might want if you’re running Java 8, but the pre-Java-9 support for a library might target 6 onwards like a lot of libraries still do. This works for Java 9 onwards – so these multi-release JAR files will support a Java 9 version, a Java 10 (or 18.3), 11, 12 version etc… but anything before Java 9 is lumped into “pre-Java 9”. If you’re running it on a version before Java 9, you get the pre-Java-9 implementation.If you’re running it on Java 9, uses Java 9 features and functionality.Now, a library developer can release a single JAR file that:
INTELLIJ JAR ARTIFACT NOT AVAILABLE IN BUILD UPGRADE
They either involve a lot of work, or they alienate/confuse users, or the libraries don’t get to make use of new features (and therefore don’t provide much incentive for their users to upgrade their version of Java either).Īs of Java 9, there’s an alternative. None of these approaches is particularly fun for the library developers or their users. For many library developers, this means they are still compiled against Java 6 and cannot move to using Java 8 features like lambdas and streams until practically all their users have moved to 8 already. Stick to the lowest common denominator release for users.Tie each one of your releases to a specific version of Java, forcing the users to either upgrade their version of Java or be stuck on an old version of the library.These might come with version numbers like “1.2-java-5” and “1.2-java-1.3”. Provide two (or more!) different JAR files, one for each version of Java they wanted to support.What does this mean? In the past, library developers had three options when it came to supporting newer versions of Java: One of the interesting features of Java 9 is support for Multi-Release JAR Files.