/** Create the {@link ResourceFinderImpl} for the project */
 @SuppressWarnings("unchecked")
 protected ResourceFinder getResourceFinder() throws MojoExecutionException {
   final ResourceFinder finder = new ResourceFinderImpl(this.project);
   try {
     final List<String> classpathElements = this.project.getCompileClasspathElements();
     finder.setCompileClassPath(classpathElements);
   } catch (DependencyResolutionRequiredException e) {
     throw new MojoExecutionException(e.getMessage(), e);
   }
   finder.setPluginClassPath(getClass().getClassLoader());
   return finder;
 }
  /**
   * Read the template notice file into a string, converting the line ending to the current OS line
   * endings
   */
  protected String readNoticeTemplate(ResourceFinder finder) throws MojoFailureException {
    final URL inputFile = finder.findResource(this.noticeTemplate);

    final StringBuilder noticeTemplateContents = new StringBuilder();
    InputStream inputStream = null;
    try {
      inputStream = inputFile.openStream();
      for (final LineIterator lineIterator =
              IOUtils.lineIterator(new BufferedInputStream(inputStream), this.encoding);
          lineIterator.hasNext(); ) {
        final String line = lineIterator.next();
        noticeTemplateContents.append(line).append(IOUtils.LINE_SEPARATOR);
      }
    } catch (IOException e) {
      throw new MojoFailureException(
          "Failed to open NOTICE Template File '" + this.noticeTemplate + "' from: " + inputFile,
          e);
    } finally {
      IOUtils.closeQuietly(inputStream);
    }

    return noticeTemplateContents.toString();
  }