private static Dependency parseDependency_1_2_2(File f) throws JAXBException {
    final JAXBContext context = JAXBContext.newInstance(Versions.class);
    final Unmarshaller unmarshaller = context.createUnmarshaller();

    final Versions versions = (Versions) unmarshaller.unmarshal(f);

    final Dependency dependency = new Dependency();
    dependency.setCoordinates(versions.getCoordinates());
    dependency.setScm(versions.getScm());

    if (versions.getDependencies() != null)
      for (Dependency d : versions.getDependencies()) dependency.addDependency(d);

    return dependency;
  }
  private void createVersionInfoFile(
      final String groupId,
      final String artifactId,
      final String version,
      Properties versionInfo,
      List<Dependency> dependencies,
      OutputStream os)
      throws MojoExecutionException, JAXBException {
    try {

      final String connectionString =
          "scm:perforce:"
              + versionInfo.getProperty("port")
              + ":"
              + getDepotPath(versionInfo.getProperty("depotpath"));

      final Versions versions = new Versions();

      for (final Dependency dep : dependencies) versions.addDependency(dep);

      final SCM scm = new SCM();
      scm.setConnection(connectionString);
      scm.setRevision(versionInfo.getProperty("changelist"));

      final Coordinates coordinates = new Coordinates();
      coordinates.setGroupId(groupId);
      coordinates.setArtifactId(artifactId);
      coordinates.setVersion(version);

      versions.setScm(scm);
      versions.setCoordinates(coordinates);

      final JAXBContext context = JAXBContext.newInstance(Versions.class);

      final Marshaller marshaller = context.createMarshaller();
      marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
      marshaller.setProperty(
          Marshaller.JAXB_SCHEMA_LOCATION,
          "urn:xml.sap.com:XCodePlugin:VersionInfo"
              + " "
              + NEXUS_URL
              + "/content/repositories/"
              + SCHEMA_REPOSITORY
              + "/"
              + SCHEMA_GROUP_ID.replace(".", "/")
              + "/"
              + SCHEMA_ARTIFACT_ID
              + "/"
              + SCHEMA_VERSION
              + "/"
              + SCHEMA_ARTIFACT_ID
              + "-"
              + SCHEMA_VERSION
              + ".xsd");

      final ByteArrayOutputStream byteOs = new ByteArrayOutputStream();

      marshaller.marshal(versions, byteOs);

      final byte[] b = byteOs.toByteArray();

      DomUtils.validateDocument(
          DocumentBuilderFactory.newInstance()
              .newDocumentBuilder()
              .parse(new ByteArrayInputStream(b)));

      IOUtils.write(b, os);
    } catch (ParserConfigurationException e) {
      throw new MojoExecutionException("Cannot create versions.xml.", e);
    } catch (IOException e) {
      throw new MojoExecutionException("Cannot create versions.xml.", e);
    } catch (SAXException e) {
      throw new MojoExecutionException("Cannot create versions.xml.", e);
    }
  }