mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-120054: Maven: war: non-filtered resource is not copied to output
This commit is contained in:
+5
-6
@@ -30,10 +30,7 @@ import org.jetbrains.jps.model.JpsEncodingConfigurationService;
|
||||
import org.jetbrains.jps.model.JpsEncodingProjectConfiguration;
|
||||
import org.jetbrains.jps.model.JpsProject;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.io.*;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
@@ -66,8 +63,10 @@ public class MavenResourceFileProcessor {
|
||||
myFilteringExcludedExtensions = moduleConfiguration.getFilteringExcludedExtensions();
|
||||
}
|
||||
|
||||
protected void copyFile(File file, File targetFile, ResourceRootConfiguration rootConfiguration, CompileContext context) throws IOException {
|
||||
boolean shouldFilter = rootConfiguration.isFiltered && !myFilteringExcludedExtensions.contains(FileUtilRt.getExtension(file.getName()));
|
||||
public void copyFile(File file, File targetFile, ResourceRootConfiguration rootConfiguration, CompileContext context,
|
||||
FileFilter filteringFilter) throws IOException {
|
||||
boolean shouldFilter = rootConfiguration.isFiltered && !myFilteringExcludedExtensions.contains(FileUtilRt.getExtension(file.getName()))
|
||||
&& filteringFilter.accept(file);
|
||||
if (shouldFilter && file.length() > FILTERING_SIZE_LIMIT) {
|
||||
context.processMessage(new CompilerMessage("MavenResources", BuildMessage.Kind.WARNING,
|
||||
"File is too big to be filtered. Most likely it is a binary file and should be excluded from filtering",
|
||||
|
||||
+2
-1
@@ -1,6 +1,7 @@
|
||||
package org.jetbrains.jps.maven.compiler;
|
||||
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.util.io.FileUtilRt;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jps.builders.BuildOutputConsumer;
|
||||
import org.jetbrains.jps.builders.DirtyFilesHolder;
|
||||
@@ -59,7 +60,7 @@ public class MavenResourcesBuilder extends TargetBuilder<MavenResourceRootDescri
|
||||
try {
|
||||
context.processMessage(new ProgressMessage("Copying resources... [" + target.getModule().getName() + "]"));
|
||||
|
||||
fileProcessor.copyFile(file, outputFile, rd.getConfiguration(), context);
|
||||
fileProcessor.copyFile(file, outputFile, rd.getConfiguration(), context, FileUtilRt.ALL_FILES);
|
||||
outputConsumer.registerOutputFile(outputFile, Collections.singleton(sourcePath));
|
||||
}
|
||||
catch (UnsupportedEncodingException e) {
|
||||
|
||||
+13
-2
@@ -16,6 +16,9 @@
|
||||
package org.jetbrains.jps.maven.compiler;
|
||||
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.util.io.FileUtilRt;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jps.builders.storage.BuildDataPaths;
|
||||
@@ -66,6 +69,8 @@ public class MavenWebArtifactRootCopyingHandlerProvider extends ArtifactRootCopy
|
||||
@NotNull private final ResourceRootConfiguration myRootConfiguration;
|
||||
@NotNull private final MavenModuleResourceConfiguration myModuleResourceConfiguration;
|
||||
@NotNull private final File myRoot;
|
||||
private FileFilter myFileFilter;
|
||||
private boolean myMainWebAppRoot;
|
||||
|
||||
private MavenWebRootCopyingHandler(@NotNull MavenResourceFileProcessor fileProcessor,
|
||||
@NotNull ResourceRootConfiguration rootConfiguration,
|
||||
@@ -75,11 +80,17 @@ public class MavenWebArtifactRootCopyingHandlerProvider extends ArtifactRootCopy
|
||||
myRootConfiguration = rootConfiguration;
|
||||
myModuleResourceConfiguration = moduleResourceConfiguration;
|
||||
myRoot = root;
|
||||
myFileFilter = new MavenResourceFileFilter(myRoot, myRootConfiguration);
|
||||
|
||||
//for additional resource directory 'exclude' means 'exclude from copying' but for the default webapp resource it mean 'exclude from filtering'
|
||||
String relativePath = FileUtil.getRelativePath(FileUtil.toSystemIndependentName(moduleResourceConfiguration.directory),
|
||||
FileUtil.toSystemIndependentName(rootConfiguration.directory), '/');
|
||||
myMainWebAppRoot = relativePath != null && "src/main/webapp".equals(StringUtil.trimEnd(relativePath, "/"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void copyFile(@NotNull File from, @NotNull File to, @NotNull CompileContext context) throws IOException {
|
||||
myFileProcessor.copyFile(from, to, myRootConfiguration, context);
|
||||
myFileProcessor.copyFile(from, to, myRootConfiguration, context, myMainWebAppRoot ? myFileFilter : FileUtilRt.ALL_FILES);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -91,7 +102,7 @@ public class MavenWebArtifactRootCopyingHandlerProvider extends ArtifactRootCopy
|
||||
@NotNull
|
||||
@Override
|
||||
public FileFilter createFileFilter() {
|
||||
return new MavenResourceFileFilter(myRoot, myRootConfiguration);
|
||||
return myMainWebAppRoot ? FileUtilRt.ALL_FILES : myFileFilter;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -44,7 +44,7 @@ public class MavenResourceFileFilter implements FileFilter {
|
||||
return relPath != null && isIncluded(relPath);
|
||||
}
|
||||
|
||||
public boolean isIncluded(String relativePath) {
|
||||
private boolean isIncluded(String relativePath) {
|
||||
if (myNormalizedIncludes == null) {
|
||||
if (myConfiguration.includes.isEmpty()) {
|
||||
myNormalizedIncludes = new String[]{"**" + File.separatorChar + '*'};
|
||||
|
||||
Reference in New Issue
Block a user