[ 
https://issues.apache.org/jira/browse/MSHARED-1330?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17821255#comment-17821255
 ] 

ASF GitHub Bot commented on MSHARED-1330:
-----------------------------------------

gnodet commented on code in PR #97:
URL: https://github.com/apache/maven-filtering/pull/97#discussion_r1504303426


##########
src/main/java/org/apache/maven/shared/filtering/FilteringUtils.java:
##########
@@ -371,6 +375,23 @@ private static void copyFilePermissions(File source, File 
destination) throws IO
         }
     }
 
+    @SuppressWarnings("ResultOfMethodCallIgnored")
+    private static void setAllPermissions(File file) throws IOException {
+        if (file.exists()) {
+            try {
+                Files.setPosixFilePermissions(
+                        file.toPath(),
+                        EnumSet.of(
+                                PosixFilePermission.OWNER_READ, 
PosixFilePermission.OWNER_WRITE,
+                                PosixFilePermission.GROUP_READ, 
PosixFilePermission.GROUP_WRITE,
+                                PosixFilePermission.OTHERS_READ, 
PosixFilePermission.OTHERS_WRITE));

Review Comment:
   > copyFilePermissions might belong in the public copyFile method above then. 
As is, that's not necessarily called.
   
   Not sure I understand your objection.  Are you implying that `private 
static` static methods should always be inlined ?  The only way the method 
would not be called is when an exception occurs afaik.





> Incremental builds fail on filtered read-only resources  
> ---------------------------------------------------------
>
>                 Key: MSHARED-1330
>                 URL: https://issues.apache.org/jira/browse/MSHARED-1330
>             Project: Maven Shared Components
>          Issue Type: Bug
>          Components: maven-filtering
>            Reporter: G.Vaysman
>            Assignee: Guillaume Nodet
>            Priority: Major
>             Fix For: maven-filtering-3.3.2
>
>         Attachments: create-license.zip
>
>
> Under certain SCM's, such as Perforce, files under ./src are read-only. With 
> the latest maven-resources-plugin (3.3.1) which has maven-filtering 3.3.1 as 
> a dependency, filtered resources end up as read-only in ./target. Since 
> filtered resources are always updated in target, this fails with exception 
> below. This worked in maven-resources-plugin 2.7, but seems to break, at 
> least, starting from maven-resources-plugin 3.0.0. Additionally note, that 
> deprecating certain maven-filtering methods (copyFile, etc) that take the 
> Boolean _overwrite_ has broken the maven-resource-plugin contract for the 
> resources:resources (see 
> [https://maven.apache.org/plugins/maven-resources-plugin/resources-mojo.html).]
> I am attaching a very simple project that demonstrates it. When unzipping, 
> make sure src/main/resources/license.txt is read-only. Execute mvn install 
> twice (without "clean") . It fails on both Windows and Linux.  
> Further, a kind of semi-independent issue is the following: if a module 
> contains multiple resources, some to be filtered and others not, a typical 
> Maven pattern is (abridged):
> {{   <resources>}}
> {{      <resource>}}
> {{        <filtering>true</filtering>}}
> {{        <includes> ...   </includes>}}
> {{      </resource>}}
> {{      <resource>}}
> {{        <filtering>false</filtering>}}
> {{        <excludes> ...  </excludes>}}
> {{      </resource>}}
> {{    </resources>}}
> This causes both filtered and unfiltered resources go through 
> maven-filtering, and it breaks incremental builds on unfiltered resources as 
> well.
> Error:
>  {{Caused by: java.io.FileNotFoundException: 
> D:\tmp\create-license\target\classes\license.txt (Access is denied)}}
> {{    at java.io.RandomAccessFile.open0 (Native Method)}}
> {{    at java.io.RandomAccessFile.open (RandomAccessFile.java:346)}}
> {{    at java.io.RandomAccessFile.<init> (RandomAccessFile.java:260)}}
> {{    at java.io.RandomAccessFile.<init> (RandomAccessFile.java:215)}}
> {{    at org.apache.maven.shared.filtering.FilteringUtils.copyFile 
> (FilteringUtils.java:348)}}
> {{    at org.apache.maven.shared.filtering.DefaultMavenFileFilter.copyFile 
> (DefaultMavenFileFilter.java:104)}}
> {{    at 
> org.apache.maven.shared.filtering.DefaultMavenResourcesFiltering.filterResources
>  (DefaultMavenResourcesFiltering.java:268)}}
> {{    at org.apache.maven.plugins.resources.ResourcesMojo.execute 
> (ResourcesMojo.java:343)}}
> {{    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo 
> (DefaultBuildPluginManager.java:137)}}
> {{    at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
> (MojoExecutor.java:210) }}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to