@@ -131,8 +131,6 @@ def clean_run_maven_plugin_output(self):
131
131
shutil .rmtree (top_path )
132
132
133
133
def run_maven_plugin (self ):
134
- dependency_tree_fname = 'tmp_dependency_tree.txt'
135
-
136
134
logger .info ('Run maven license scanning plugin with temporary pom.xml' )
137
135
if os .path .isfile ('mvnw' ) or os .path .isfile ('mvnw.cmd' ):
138
136
if self .platform == const .WINDOWS :
@@ -147,24 +145,23 @@ def run_maven_plugin(self):
147
145
if ret != 0 :
148
146
logger .error (f"Failed to run maven plugin: { cmd } " )
149
147
150
- cmd = f"{ cmd_mvn } dependency:tree > { dependency_tree_fname } "
151
- ret = subprocess .call (cmd , shell = True )
152
- if ret != 0 :
148
+ cmd = f"{ cmd_mvn } dependency:tree"
149
+ ret_txt = subprocess .check_output (cmd , text = True , shell = True )
150
+ if ret_txt is not None :
151
+ self .parse_dependency_tree (ret_txt )
152
+ self .set_direct_dependencies (True )
153
+ else :
153
154
logger .error (f"Failed to run: { cmd } " )
154
155
self .set_direct_dependencies (False )
155
- else :
156
- self .parse_dependency_tree (dependency_tree_fname )
157
- self .set_direct_dependencies (True )
158
- os .remove (dependency_tree_fname )
159
156
160
157
def create_dep_stack (self , dep_line ):
161
158
dep_stack = []
162
159
cur_flag = ''
163
160
dep_level = - 1
164
161
dep_level_plus = False
165
- for line in dep_line .readlines ( ):
162
+ for line in dep_line .split ( ' \n ' ):
166
163
try :
167
- if not line . startswith ( '[ INFO]' ):
164
+ if not re . search ( r'[.* INFO.*]' , line ):
168
165
continue
169
166
if len (line ) <= 7 :
170
167
continue
@@ -194,17 +191,16 @@ def create_dep_stack(self, dep_line):
194
191
logger .warning (f"Failed to parse dependency tree: { e } " )
195
192
196
193
def parse_dependency_tree (self , f_name ):
197
- with open (f_name , 'r' , encoding = 'utf8' ) as input_fp :
198
- try :
199
- for stack , name in self .create_dep_stack (input_fp ):
200
- if len (stack ) == 0 :
201
- self .direct_dep_list .append (name )
202
- else :
203
- if stack [- 1 ] not in self .relation_tree :
204
- self .relation_tree [stack [- 1 ]] = []
205
- self .relation_tree [stack [- 1 ]].append (name )
206
- except Exception as e :
207
- logger .warning (f'Fail to parse maven dependency tree:{ e } ' )
194
+ try :
195
+ for stack , name in self .create_dep_stack (f_name ):
196
+ if len (stack ) == 0 :
197
+ self .direct_dep_list .append (name )
198
+ else :
199
+ if stack [- 1 ] not in self .relation_tree :
200
+ self .relation_tree [stack [- 1 ]] = []
201
+ self .relation_tree [stack [- 1 ]].append (name )
202
+ except Exception as e :
203
+ logger .warning (f'Fail to parse maven dependency tree:{ e } ' )
208
204
209
205
def parse_oss_information (self , f_name ):
210
206
with open (f_name , 'r' , encoding = 'utf8' ) as input_fp :
0 commit comments