play1 에서 play deps  명령을 호출시 modules 디렉토리 밑에 설치된 module 파일이  'module의 설치된 절대 위치'로 저장되는 경우가 있다.


modules/spring-1.0.3 이 파일로 있고, /usr/local/play/modules/spring-1.0.3 이렇게 파일 위치만 저장되는 경우



play deps --forceCopy 명령어를 내려면 파일이 아닌 디렉토리로 modules이 설치된다.






관련 코드는 play1(참고 1.3.0)의 ./framework/pym/play/commands/deps.py ,  ./framework/src/play/deps/DependenciesManager.java참조한다.


1번 작업 

./framework/pym/play/commands/deps.py 파일에서 -Dplay.forcedeps=true 로 변경한다.


2번 작업

 ./framework/src/play/deps/DependenciesManager.java의 

install(ArtifactDownloadReport artifact)  메소드에서 force 값이 true인지 확인하고, modules로 파일 복사를 한다.



Boolean force = System.getProperty("play.forcedeps").equals("true");

...


} else {

                // A module

                String mName = from.getName();

                if (mName.endsWith(".jar") || mName.endsWith(".zip")) {

                    mName = mName.substring(0, mName.length() - 4);

                }

                File to = new File(application, "modules" + File.separator + mName).getCanonicalFile();

                new File(application, "modules").mkdir();

                Files.delete(to);

                if (from.isDirectory()) {

                    if (force) {

                        IO.copyDirectory(from, to);

                    } else {

                        IO.writeContent(from.getAbsolutePath(), to);

                    }

                    System.out.println("~ \tmodules/" + to.getName() + " -> " + from.getAbsolutePath());

                } else {

                    Files.unzip(from, to);

                    System.out.println("~ \tmodules/" + to.getName());

                }




Posted by '김용환'
,