예제 #1
0
  public static void runOrApplyMavenProjectFileTemplate(
      Project project,
      VirtualFile file,
      @NotNull MavenId projectId,
      MavenId parentId,
      VirtualFile parentFile,
      boolean interactive)
      throws IOException {
    Properties properties = new Properties();
    Properties conditions = new Properties();
    properties.setProperty("GROUP_ID", projectId.getGroupId());
    properties.setProperty("ARTIFACT_ID", projectId.getArtifactId());
    properties.setProperty("VERSION", projectId.getVersion());
    if (parentId != null) {
      conditions.setProperty("HAS_PARENT", "true");
      properties.setProperty("PARENT_GROUP_ID", parentId.getGroupId());
      properties.setProperty("PARENT_ARTIFACT_ID", parentId.getArtifactId());
      properties.setProperty("PARENT_VERSION", parentId.getVersion());

      if (parentFile != null) {
        VirtualFile modulePath = file.getParent();
        VirtualFile parentModulePath = parentFile.getParent();

        if (!Comparing.equal(modulePath.getParent(), parentModulePath)) {
          String relativePath = VfsUtil.getPath(file, parentModulePath, '/');
          if (relativePath != null) {
            if (relativePath.endsWith("/"))
              relativePath = relativePath.substring(0, relativePath.length() - 1);

            conditions.setProperty("HAS_RELATIVE_PATH", "true");
            properties.setProperty("PARENT_RELATIVE_PATH", relativePath);
          }
        }
      }
    }
    runOrApplyFileTemplate(
        project,
        file,
        MavenFileTemplateGroupFactory.MAVEN_PROJECT_XML_TEMPLATE,
        properties,
        conditions,
        interactive);
  }