First defining target/source
does not guarantee that you code will work with an other JVM version than the one you have used to compile with (it is unlikely but it happens). The only solution for this is to use maven toolchains which assumes you have the appropriate JDK installed and compile with the correct JDK.
Furthermore for your problem with your libraries you can use the animal-sniffer-maven-plugin which will also check libraries against an JDK signature file...
<project>
...
<build>
...
<plugins>
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>animal-sniffer-maven-plugin</artifactId>
<version>1.15</version>
...
<configuration>
...
<signature>
<groupId>org.codehaus.mojo.signature</groupId>
<artifactId>java17</artifactId>
<version>1.0</version>
</signature>
...
</configuration>
...
</plugin>
...
</plugins>
...
</build>
...
</project>
So if you run it with your build all libraries your using will be checked against the JDK signature file.
To check also the byte code you can use the maven-enforcer-plugin in combination with the extra-enforcer-rules like this:
<project>
[...]
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.4.1</version>
<executions>
<execution>
<id>enforce-bytecode-version</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<enforceBytecodeVersion>
<maxJdkVersion>1.7</maxJdkVersion>
<excludes>
<exclude>org.mindrot:jbcrypt</exclude>
</excludes>
</enforceBytecodeVersion>
</rules>
<fail>true</fail>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.codehaus.mojo</groupId>
<artifactId>extra-enforcer-rules</artifactId>
<version>1.0-beta-4</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
[...]
</project>